(57)【特許請求の範囲】
【請求項１】
ロボットの各軸を駆動するサーボモータへ移動指令を出力するためのソフトウェア手段を備えたロボットの制御装置において、
前記ソフトウェア手段は、ロボットの動作目標位置までの移動量を求め、これをある周期で補間処理し、
前記補間処理された出力を加減速制御のためにフィルタリング処理し、
ロボット動作中に動的に指定される各軸共通のオーバライド値の下でロボットのツール先端点の軌跡を変えることなく動作させるようオーバライドのための処理を行なうようにした、前記ロボット制御装置。
【請求項２】
プログラム実行中にオーバライド値を変更した揚合に、ロボットのツール先端点の軌跡を変えることなく動作させるように、前記オーバライドのための処理が行なわれる、請求項１に記載のロボットの制御装置。
【請求項３】
プログラム実行時にロボットを一時停止させた場合に、オーバライド値を０まで低下させる処理を行なってロボットを減速させ、通常動作で描くツール先端点の軌跡に沿って前記減速が行なわれて停止に至るようにロボットを制御する、請求項２に記載されたロボットの制御装置。
【請求項４】
プログラム実行時にロボットを一時停止させた後、停止後に動作を再開させた場合に、オーバライド値を０から上昇させる処理を行なってロボットを通常動作で描くツール先端点の軌跡に沿って加速し、一時停止前と同じ速度と同じ軌跡を以て動作する状態に至るようにロボットを制御する、請求項３に記載されたロボットの制御装置。
【請求項５】
プログラム実行時にロボットを非常停止させた後、停止後に動作を再開させた場合には、通常動作で描くツール先端点の軌跡上に戻るための移動を表わす移動指令を前記サーボモータへ出力する処理を行なって通常動作で描くツール先端点の前記軌跡上に戻り、その後、前記オーバライド値を所定値まで上昇させる処理を行なってその軌跡に沿って加速し、非常停止前と同じ速度と同じ軌跡を以て動作する状態に至るようにロボットを制御する、請求項２に記載されたロボットの制御装置。
【請求項６】
前記ロボットの制御装置内部でオーバライドの目標値が保持され、オーバライド現在値をオーバライドの前記目標値に向けて漸次変更することによってオーバライド値の変更が行ない得る、請求項２〜請求項５のいずれか１項に記載のロボットの制御装置。
【請求項７】
前記一時停止時点付近で、前記ロボットの制御装置内部で動作データを保存し、動作再開時に前記保存された動作データを利用するようにした、請求項３〜請求項５のいずれか１項に記載のロボットの制御装置。
【請求項８】
前記動作プログラムに基づく前記動作計画は、少なくとも一つの動作区間について直交動作を行なうための直交動作計画を含んでいる、請求項１〜請求項７のいずれか１項に記載のロボットの制御装置。
【請求項９】
前記動作プログラムに基づく前記動作計画は、少なくとも一つの動作区間について各軸動作を行なうための各軸動作計画を含んでいる、請求項１〜請求項７のいずれか１項に記載のロボットの制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は産業用ロボット（以下、単に「ロボット」と言う。）を制御するための制御装置に関し、更に詳しく言えば、オーバライド指令時や一時停止前後におけるロボット軌跡精度を向上させるようにしたロボット制御装置に関する。
【０００２】
【従来の技術】
動作プログラムで指定されている速度（以下、「プログラム速度」と言う）よりも低い速度でロボットを移動させる必要がある場合には、プログラム速度に対して一定の割合で動作速度を低下させるオーバライドの手法が広く用いられている。例えば、新規作成された動作プログラムや修正を行なった動作プログラムについては、低率のオーバライドを指定して再生運転（テストラン）を行ない、危険を避けながら移動軌跡の確認を行なっている。
【０００３】
軌跡が適正であると確認された動作プログラムは、実際の作業を担当するロボットの制御装置内で再生されるが、再生運転に際して指定されるオーバライドは、当然、プログラム速度通りでの移動を指令する「１００％」、あるいはそれに近い高率とされることが通例である。
【０００４】
ところが従来のロボット制御装置を用いた場合、オーバライドによって移動速度を低下させた場合に実現される軌跡と、オーバライド１００％指定時（速度低下なし）に実現される軌跡との間にずれが生じていた。この軌跡ずれは、指定されたオーバライド値が低い程大きくなる性質がある。即ち、低率のオーバライドの下での動作中にロボットがコーナ部分にさしかかると、そのコーナで位置決めが行なわれる場合を除き、各軸及ぴ直線、円弧動作いずれの動作形式においてもツール先端点の軌跡が、指定されているオーバライド値によって大きく変化していた。
【０００５】
そのため、実際の軌跡確認にあたっては、低率のオーバライドを指定した動作から始め、徐々にオーバライドをあげながらテストランを繰り返すことで正確な軌跡の確認を試みているのが現状である。このような軌跡ずれは、低率のオーバライド指定時のみならず、動作中のオーバライド値変更時やロボットの一時停止の前後（減速時、加速時）においても同様の態様で発生する。
【０００６】
結局、従来技術においては、位置教示後、オーバライド１００％で動作させるまでのテストランの繰り返しに長時間を要していた。また、プログラム再生動作時に一時停止の処理をした場合、減速に伴なってツール先端点位置が、一時停止の処理を行なわない通常勤作時に描かれるツール先端点の軌跡（以下、「通常軌跡」と言う）からはずれて行き、通常軌跡上に無い位置で停止する。なお、本明細書では、「一時停止」には、アラーム出力によりサーボへの移動指令出力を瞬時に停止させることを意味する「非常停止」は含まないこととする。
【０００７】
同様に、一時停止後プログラム再生を再開した直後のツール先端点の軌跡も通常軌跡からはずれており、通常軌跡に一致するまでに相当の移動距離を要する。このような軌跡のずれは、ロポットハンド等のエンドエフェクタと外部物体（ジグ、ワーク、他の設置機器等）が干渉する原因にもなっていた。
【０００８】
図１は、上述した問題について考察するために、プログラム再生時に動作計画からサーボへの移動指令出力までにロボット制御装置内部で行なわれていた従来方式の処理の枠組みを説明する図である。従来方式に従った通常処理の枠組は図１に示したようなもので、枠組み全体は、動作計画部と、補間処理部と、フィルタ部に大別され、各部は各軸動作用の系列と直交動作（直線動作、円弧動作等）用の系列に２分することが出来る。
【０００９】
動作計画部は、動作プログラムの指定内容（移動目標位置、運動形式、プログラム速度など）に従ってロボットの動作計画を作成する部分で、動作プログラムで指定された運動形式が各軸動作であれば各軸動作計画部で動作計画が作成され、動作プログラムで指定された運動形式が直交動作（直線動作、円弧動作等）であれば直交動作計画部で動作計画が作成される。
【００１０】
オーバライドはこの動作計画部で考慮され、プログラム速度にオーバライド（百分率）を乗じたものが、補間処理部に対する指令遠度出力となる。動作計画部と補間処理部の間には、動作計画部からの指令速度出力の補間処理部への送り込みを制御する動作シャッタとして機能するブロックが設けられている。動作シャッタは、指令遠度出力が生成される毎に開放され、指令遠度出力を補間処理部に渡す。
【００１１】
補間処理部では、この指令遠度出力を受けて計算処理周期（ＩＴＰ）毎に補間処理が各軸上あるいは直交座標系上で行なわれ、ＩＴＰ毎の移動量が計算され、出力される。続くフィルタ部では、補間処理部の出力に対して所定の時定数でフィルタリングが行なわれる。この処理はロボットの加減速を制御して、加速／減速の動きを滑らかにするために行なわれる。
【００１２】
各軸フィルタ処理部でフィルタリング処理された出力も、フィルタリング後、各軸（Ｊ１〜Ｊ６）のサーボへ出力される。なお、直交動作の場合、直交座標系から各軸座標系への変換を行なうためのいわゆる逆変換の処理が必要となる。この逆変換の処理はフィルタリングの前に逆変換を行なわれることが多いが、フィルタリングの後で行なうこともある。
【００１３】
再生動作中にロボット制御装置内部で一時停止の指令が出力された場合には、動作シャッタのオフ反転により補間処理部にホールドがかけられ、補問処理が中断される。ホールド指令が出される前に補間処理で作成された出力はフィルタ部でフィルタ処理されて後、サーボへ出力される。サーボへ出力された移動指令が各軸の移動で消化されるとサーボへの入力が途絶え、ロボットは停止に至る。
【００１４】
動作プログラムで２つの動作を滑らかにつなぐ経路が指定されている場合、２つの動作指令は重畳して処理される。その際、２つの動作の内先行動作の終点における移動接線方向と後行動作の始点における移動接線方向が互いに異なる場合には、丸みを帯びたコーナが生成される。この時の動作の重なり量が、コーナの内回りの形状を左右する。
【００１５】
ここで、オーバライドの高低と動作の重なり量との関係を考えてみる。オーバライドが低い場合には、指令速度は当然低くなるが、フィルタ都の加減速処理の時定数は変わらないので、動作の重なり量は小さくなる。このことは、コーナの内回り量が小さくなる（即ち、丸みの曲率が小さくなる）ことを意味している。逆に、オーバライドが高い場合には、指令速度は当然高くなり、同じフィルタ都の加減速処理の時定数の下で動作の重なり量は大きくなる。その結果、コーナの内回り量が大きくなる（即ち、丸みの曲率が大きくなる）。
【００１６】
図２は、簡単な例でこれらの現象を説明する図である。図２の例では、動作プログラムとして、イチ［１］へ向けて２０００ｍｍ／ｓｅｃで直線移動する動作と、イチ［２］へ向けて１０００ｍｍ／ｓｅｃで直線移動して停止（位置決め）する動作を１００％の滑らかさで接続するものを考えている。コーナ通過に伴う現象を考察するために、図示した如く、イチ［１］へ向かう直線経路は−Ｘ軸方向へ向い、イチ［２］へ向かう直線経路は＋Ｙ軸方向へ向うケースを想定する。各動作のフィルタ処理後の指令速度出力推移が右上部に併記されており、符号ａ、ｂが動作の重なりを一般的に表わしている。
【００１７】
今、高いオーバライドとして１００％、低いオーバライドとして５０％を想定すると、オーバライド１００％時におけるフィルタ処理後の重なりａ１、ｂ１と、オーバライド５０％時におけるフィルタ処理後の重なりａ２、ｂ２はぞれぞれ図示したようなものとなる。即ち、オーバライドが２倍のファクタで異なっているにも拘らず同じ時定数でフィルタリングが行なわれるために、動作の重なり量に大きな差が生じる。その結果、実現される軌跡はｃ１、ｃ２で示したように異なったものとなる。コーナ部の丸みはｃ１では大きく、ｃ２では小さい。
【００１８】
次に、オーバライド１００％の場合について、イチ［１］で代表されるコーナ通過中のＰ点で一時停止によりホールドがかかった場合を考える。ホールドがかかった時点から、イチ［２］へ向かう動作分の補間処理部の出力は、ホールドがかからなかった場合（破線ｄで表示）に比して急減して残留指令出力のみとなる。そのため、フィルタ処理後の２つの動作の重なりが、コーナ移動途上で急減する効果をもたらす。
【００１９】
その結果、ホールドがかかった時点に対応するＰ点から軌跡がコーナ代表点イチ［２］側へずれてｃ３のようになり、ホールドがかからなかった場合の軌跡ｃ１からはずれた点Ｑで停止する（イチ［１］へ向かう動作は消化されることに注意）。一時停止後に再生を再開すると、ロボット軌跡は点Ｑから、ｃ４で示したような軌跡を辿ることになる（途中からｃ１に一致）。
【００２０】
これと類似した軌跡ずれ現象は、コーナ通過中にオーバライドが切り替わった場合にも発生することは明らかである。なぜならば、同じ時定数の下でフィルタリングが行なわれるために、補間処理部の出力の大小によって２つの動作の重なり量が変化し、その結果、軌跡が変化するからである。
【００２１】
即ち、これら軌跡ずれを発生させる諸ケース（オーバライドの高低、オーバライドの動作中の切換、一時停止の前後）には、フィルタリング処理の入力レベルの推移が通常時とは異なっているという共通した要因がある。フィルタリング処理の入力レベルが変化しているのに、同じ時定数の下でフィルタリング処理が行なわれるために、２つの方向の異なる動作が重なる部分では、動作経路に差異が生じてしまうと考えることが出来る。
【００２２】
【発明が解決しようとする課題】
そこで、本発明の目的は、従来技術において上記共通した要因で発生する軌跡ずれを解消出来るロボット制御装置を提供することにある。即ち、本発明は、オーバライドの高低、オーバライドの動作中の切換、一時停止の前後における軌跡精度の低下を防止出来るロボット制御装置を提供することにある。
【００２３】
本発明はまたそのことを通して、教示後のテストラン時の軌跡と高オーバライドの下での運転時の軌跡のずれを解消し、軌跡確認作業の効率性と安全性を向上させようとするものである。更に、本発明は、オーバライドの動作中の切換や一時停止に伴う軌跡ずれをなくすことを通して、ロボット作業の精度と安全性を図るものでもある。
【００２４】
【課題を解決するための手段】
本発明は、上述の如き要因で発生する軌跡ずれを解消出来るソフトウェアを装備したロボットの制御装置を提供するもので、ロボットの各軸を駆動するサーボモータへ移動指令を出力するためのソフトウェア手段を備えたロボットの制御装置に適用される。
【００２５】
本発明に従えば、ロボットの制御装置に装備されるソフトウェア手段は、ロボットの動作目標位置までの移動量を求め、これをある周期で補間処理し、補間処理された出力を加減速制御のためにフィルタリング処理し、ロボット動作中に動的に指定される各軸共通のオーバライド値の下でロボットのツール先端点の軌跡を変えることなく動作させるようオーバライドのための処理を行なう。
【００２６】
プログラム実行中にオーバライド値を変更した揚合には、ロボットのツール先端点の軌跡を変えることなく動作させるように、オーバライドのための処理が行なわれる。そして、プログラム実行時にロボットを一時停止させた場合には、オーバライド値を０まで低下させる処理を行なってロボットを減速させ、通常動作で描くツール先端点の軌跡に沿って前記減速が行なわれて停止に至るようにロボットを制御することが出来る。
【００２７】
また、プログラム実行時にロボットを一時停止させた後、停止後に動作を再開させた場合には、オーバライド値を０から上昇させる処理を行なってロボットを通常動作で描くツール先端点の軌跡に沿って加速し、一時停止前と同じ速度と同じ軌跡を以て動作する状態に至るようにロボットを制御することが出来る。
【００２８】
更に、プログラムラム実行時にロボットを非常停止させた後、停止後に動作を再開させた場合には、通常動作で描くツール先端点の軌跡上に戻るための移動を表わす移動指令をサーボモータへ出力する処理を行なって通常動作で描くツール先端点の前記軌跡上に戻り、その後、オーバライド値を所定値まで上昇させる処理を行なってその軌跡に沿って加速し、非常停止前と同じ速度と同じ軌跡を以て動作する状態に至るようにロボットを制御することも出来る。
【００２９】
以上のような制御を可能にするために、ロボット制御装置内部でオーバライドの目標値が保持され、オーバライド現在値をオーバライドの前記目標値に向けて漸次変更することによってオーバライド値の変更が行ない得るようになっていることが好ましい。
【００３０】
また、一時停止時点付近では、ロボット制御装置内部で動作データを保存し、動作再開時に前記保存された動作データを利用することが好ましい。
【００３１】
なお、動作プログラムに基づいてなされる動作計画は、動作形式として直線動作が指定されている動作区間については直交動作計画になり、動作形式として各軸動作が指定されている動作区間については各軸動作計画となる。本発明では、直交動作、各軸動作いずれの動作形式による動作に関しても、オーバーライド値の高低や一時停止／動作再開に伴う軌跡のずれを解消出来る。
【００３２】
【発明の実施の形態】
図３は本発明が適用されるロボット制御装置を含むロボットシステムのハードウェアの構成を例示した要部ブロック図である。同図に示したように、全体を符号３０で指示したロボット制御装置は、エンドエフェクタとしてハンド１０をアーム先端部１に取り付けたロボットＲＢを制御する。ロボットＲＢはここでは６軸ロボットとする。エンドエフェクタ（ハンド１０）の位置を代表する点であるツール先端点ＴＣＰは、ハンド１０の中心部に設定されている。
【００３３】
ロボット制御装置３０はホストＣＰＵ３１、共有ＲＡＭ３２、サーボＣＰＵ３３、サーボアンプ３４、メモリ３５、教示操作盤用インターフェイス３６並びに一般外部装置用の入出力装置３８を備えている。メモリ３５は、システムプログラムが格納されたＲＯＭ、データの一時記憶用のＲＡＭ、及びシステム（ロボットＲＢの動作を定めた各種プログラムデータが格納された不揮発性メモリを含んでいる。
【００３４】
教示操作盤用インターフェイス３６に接続された教示操作盤３７は、プログラムデータの入力、修正、登録や、手動送り（（ジョグ送り）指令、再生運転指令等のマニュアル入力に利用される。また、外部装置用入出力装置３８にはロボットＲＢのメカニカルブレーキの他、アプリケーションに応じた各種外部装置（例えば、溶接用電力電源装置）が接続される。
【００３５】
再生運転あるいは手動送り（ジョグ送り）の実行時には、ホストＣＰＵ３１はロボットＲＢの各軸に対する移動指令を作成し、共有ＲＡＭ３２へ出力する。サーボＣＰＵ３３はこれを所定の短周期で読み出し、ロボット各軸の位置検出器（パルスコーダ）から送られてくる位置信号（フィードバック）信号に基づいてサーボ処理を実行し、各軸のサーボアンプ３４に電流指令を出力し、ロボット各軸のサーボモータを駆動する。また、サーボＣＰＵ３３はロボット各軸の位置検出器（パルスコーダ）から送られてくる位置信号（フィードバック）信号に基づいてロボット各軸の現在位置を周期的に共有ＲＡＭ３２に書き込む。
【００３６】
上述した構成と機能は、通常のロボットシステムのそれと特に変わるところはない。本システムで用いられているロボット制御装置３０が従来のものと異なるのは、ホストＣＰＵ３１がプログラムデータを読み込んでから、ロボットＲＢの各軸に対する移動指令を作成するまでの処理過程が改良され、前述した諸要因（オーバライドの高低、オーバライドの動作中の切換、一時停止の前後処理）で発生するロボットの軌跡ずれが回避出来るようになっていることにある。改良されたプログラムデータ及び関連設定値は、メモリ３５に格納されている。以下、この改良点を中心に説明する。
【００３７】
図４は、本発明の実施形態について、プログラム再生時に動作計画からサーボへの移動指令出力までにロボット制御装置内部で行なわれる処理の枠組みを図１と同様の形式で説明する図である。
【００３８】
図４に示した処理の枠組み全体は、従来と同様に、動作計画部と、補間処理部と、フィルタ部を備え、それぞれが各軸動作用のブロックと直交動作用のブロックを有し、各部は各軸動作用の系列と直交動作（直線動作、円弧動作等）用の系列に２分することが出来る。
【００３９】
動作計画部は、動作プログラムの指定内容（移動目標位置、運動形式、プログラム速度など）に従ってロボットの動作計画を作成する部分で、動作プログラムで指定された運動形式が各軸動作であれば各軸動作計画部で動作計画が作成され、動作プログラムで指定された運動形式が直交動作（直線動作、円弧動作等）であれば直交動作計画部で動作計画が作成される。
【００４０】
補間処理部では、この指令遠度出力を受けて所定の計算処理周期（ＩＴＰ）毎に補間処理が各軸上あるいは直交座標系上で行なわれ、ＩＴＰ毎の移動量が計算され、出力される。続くフィルタ部では、加減速制御のために補間処理部の出力に対して所定の時定数でフィルタリングが行なわれる。各軸補間処理部からの出力は、各軸フィルタ処理部でフィルタリング処理される。
【００４１】
以上のブロック構成は従来と共通したものであるが、オーバライドを考慮する段階が従来とは基本的に異なっている。即ち、前述したように、従来の処理においては、オーバライドは動作計画の処理の中で考慮され、オーバライド値を乗じた後の出力が動作シャッタを介して補間処理部に渡されていたのに対し、本実施形態では本発明の特徴に従い、フィルタ部の後段に設けられている。
また、それに伴って動作シャッタのブロックもフィルタ部の後段に移されている。
【００４２】
オーバライドはこの動作シャッタ付のオーバライド処理部（動的速度制御部とも言う。以下、同じ。）で考慮され、フィルタ部の出力にオーバライド（百分率）を乗じたものが、各軸（Ｊ１〜Ｊ６）のサーボへ分配・出力される。直交補間処理部からの出力は、直交フィルタ処理部でフィルタリング処理され、逆変換を経て、各軸（Ｊ１〜Ｊ６）のサーボへ分配・出力される。直交補間処理部からの出力は、各軸への分配に際して逆変換の処理を受ける。
【００４３】
再生動作中にロボット制御装置内部で一時停止の指令が出力された場合には、補間処理部ではなく、動作シャッタのオフ反転によりオーバライド部（フィルタ部の出力）にホールドがかけられる。
【００４４】
本実施形態の特徴をなす処理を、オーバライド関連処理と一時停止関連処理に分けてその概略を述べれば、次のようになる。
（１）オーバライド関連処理の概略；
本実施形態では、図４の下半部に示したように、動作計画部ではオーバライドは考慮されず、プログラム速度通りの入力に対して補間処理が行なわれる。補間処理後の出力は続くフィルタ部で所定の時定数の下でフィルタリング処理される。ここまでの段階では、処理がオーバライドに左右される余地が無いことが明らかである。従って、オーバライドが高くても低くても、また、動作途中でオーバライドの率が切り換えられても、フィルタ部の出力に全く影響はない。
【００４５】
続くオーバライドの処理では、フィルタ部の出力を次の条件式（１）、（２）を満たすように修正する。なお、オーバライド値をβ％（０≦β≦１００）、フィルタ部出力が表わす速度をｖflout 加速度をαflout 、オーバライド処理後の出力が表わす速度をｖovout 、加速度をαovout で表記する。
αovout ＝αflout ×（β／１００）2               ・・・（１）
ｖovout ＝ｖflout ×（β／１００）                ・・・（２）
図５は、オーバライドの処理をフィルタ部出力に５０％のオーバライドをかけた場合を例にとって説明する図である。オーバライド処理では、全軸同期させながら、指令を分割して出力が生成される。今、仮にフィルタ部出力を７個のセグメントｓｇ１〜ｓｇ７（７個の移動指令）で表わすと、それらセグメントｓｇ１、ｓｇ２・・・ｓｇ７は、１５ＩＴＰを使って、計１５個のセグメントに分割されて出力される。
【００４６】
例えば、ｓｇ１は、ｓｈ２で半分出力され、ｓｈ１とｓｈ３で１／４づつ出力される。また、ｓｇ４は、ｓｈ８で半分出力され、ｓｈ７とｓｈ９で１／４づつ出力される。出力時の各セグメントｓｈは、両端部を除いて一般には、複数のフィルタ部出力のセグメントｓｇに由来する移動量が重なったものとなる。今、ｓｇ１、ｓｇ２、ｓｇ３に対応する移動量がベクトルｍ１、ｍ２、ｍ３で表される場合、それらに由来する出力のセグマントｓｈ１〜ｓｈ５は図示したようなベクトルｎ１〜ｎ５で表わされるような移動量を表わすことになる。経路としては、オーバライドが低い程滑らかさが増した軌跡が得られるが、オーバライド処理の前後で軌跡の基本ラインは変化しない。
【００４７】
オーバライド処理における各ＩＴＰ毎の移動量（出力セグメント＝１ＩＴＰ当りの移動量で速度瞬時値に相当）の計算式については後述するが、要点は次の通りである。
１−１．加減速処理を行なったフィルタ部の出力の各移動量（入力セグメント）に対してオーバライド率（β／１００）を乗じた移動量を計算する。
１−２．上記１−１．で計算された移動量が過大な場合（そのまま出力したのでは上記式（１）、（２）の左辺が過大となって等式を成立させられない場合）には、過剰分を差し引いて出力する。なお、最初のＩＴＰでは、上記１−１．で計算された移動量では移動量が小さ過ぎて上記式（１）、（２）を満たせなくなるというケースは生じない（β≦１００なので、上記式（１）、（２）の左辺が過小になることはない）。
【００４８】
２．次回ＩＴＰでは、未出力の移動量に対して再度オーバライド率（β／１００）を乗じた移動量を計算する。但し、それでは移動量が不足する場合（上記式（１）、（２）を満たせない場合）には、不足分を足して出力する。不足分の出力は、古い移動指令（入力セグメント）の未出力分を優先して選ぶ。２回目以降のＩＴＰでは、未出力の移動量に対して再度オーバライド率（β／１００）を乗じる上記計算で移動量が過剰になることはない。
【００４９】
３．更にその次のＩＴＰでは、未出力の移動量が存在する移動指令について、それぞれ再度オーバライド率（β／１００）を乗じた移動を出力する。それでは移動量が不足する場合（上記式（１）、（２）を満たせない場合）には、不足分を足して出力する。不足分の出力は、古い移動指令（入力セグメント）の未出力分を優先して選ぶ。以下、同様の処理を繰り返し、全移動指令の全移動量を出力したら処理を終了する。
【００５０】
このような処理では、加速に使われる移動量、加速部の移動量、減速部の移動量はほぼ一定になる。この事は、オーバライドが変わっても、２つの動作が重なる時の重なり量が一定になることを意味している。従って、オーバライドの高低によらず、コーナ部通過時についてもほぼ一定の軌跡が実現されることになる。
【００５１】
図６は、セグメントｓｇ１〜ｓｇ７で表わされる動作と、セグメントｓｋ１〜ｓｋ７で表わされる動作が、ｓｇ６、ｓｇ７とｓｋ１、ｓｋ２が同期する関係で重なり合った場合について、オーバライド処理の影響を説明する図である。今、例としてオーバライド５０％を考えると、図５で説明したように、セグメントｓｇ１〜ｓｇ７は、ｓｈ１〜ｓｈ１５に分割して出力される。その際、ｓｇ６で表わされる移動量はｓｈ１１、ｓｈ１２、ｓｈ１３に分配され、ｓｇ７で表わされる移動量はｓｈ１３、ｓｈ１４、ｓｈ１５に分配される。
【００５２】
同様に、セグメントｓｋ１〜ｓｋ７も、ｓｋ１〜ｓｋ１５に分割して出力される。そして、ｓｋ１で表わされる移動量はｓｑ１、ｓｑ２、ｓｑ３に分配され、ｓｋ２で表わされる移動量はｓｑ３、ｓｑ４、ｓｑ５に分配される。オーバライド処理後で見ると、２つの動作はｓｈ１１〜ｓｈ１５とｓｑ１〜ｓｑ７で重なり合うことになる。
【００５３】
このように、動作の重なりにおける移動量の消化速度は両動作均等に低下しており（ここでは半分）、且つ、消化される総移動量はオーバライド５０％の処理によって変化していない。このような性質は、オーバライドの率が他の値でも変わらない。
【００５４】
オーバライドが動作途中で切り換えた場合も、フィルタ部出力のセグメントの分割比率を滑らかに変えて上記例に準じてオーバライドの処理を行なうことにより、同様に、一定の軌跡を保つ事が可能である。
【００５５】
この場合、新旧オーバライド率を（βN ／１００）、（βO ／１００）として、加速度が（βN ／１００）2 から（βO ／１００）2 に途中変更される。そのために、オーバライド変更指令直後のＩＴＰで出力予定だったオーバライド処理出力は、更に１／［βN ／（βO ×１００）］回に振り分けるように調整して出力される。
【００５６】
新旧オーバライド率（βN ／１００）、（βO ／１００）の急変の影響を避けるためには、オーバライド率を（βN ／１００）から（βO ／１００）に段階的に滑らかに変えていくことが好ましい。そのために、実際には、目標オ一バライド値を設定するレジスタをメモリ内に設定しておき、ユーザがこのレジスタに新オーバライド値βN を更新入力することで、現在オーバライド値を目標オーバライド値（ここでは新オーバライド率βN ）へ漸近、到達させる処理が開始される。
【００５７】
各ＩＴＰにおける移動量の計算にあたっては、オーバライド目標値が更新された直後のＩＴＰから、オーバライド値として、旧オーバライド目標値（βO ）のオーバライド目標値（βN ）の間を段階的にｎ回（ｎ≧２）に区切った値を使用して移動量を計算する。例えば、オーバライド目標値が更新された直後からｊ回目のＩＴＰではβ＝βO ＋ｊΔβとする。但し、Δβ＝（βN −βO ）
／ｎ、ｊ＝１，２・・・ｎである。
【００５８】
（２）一時停止関連処理の概略；
図７は、本実施形態における一時停止関連処理について説明するための図である。ここでは、１例として、ｓｇ１〜ｓｇ１８のセグメントで表わされるフィルタ部出力（オーバライド処理後の出力であっても良い）について、セグメントｓｇ４までのサーボへの出力が完了し、セグメントｓｇ５の出力のためのＩＴＰでホールド指令が内部出力された場合を考える。
【００５９】
この場合、図示されているように、セグメントｓｇ５以降の移動量を表わすデータは、そのままサーボへ出力されることはなく、所定のメモリ（図３におけるメモリ３５内に予め設定されるバッファ）内に一旦格納される。但し、所定の時定数（ここでは３ＩＴＰ）に対応するセグメントｓｇ５、ｓｇ６、ｓｇ７については、オーバライド処理部で動的に処理され、各軸を減速させ、やがて停止させる。
減速・停止のための動的処理としては、上述のオーバライドのかけ方を応用して、オーバライド目標値を０とし、徐々にオーバライド目標値である０までｎ回（ｎ≧２）に分けて低下させる処理が採用出来る。
【００６０】
図示した例では、セグメントｓｇ５、ｓｇ６、ｓｇ７がｓｗ５〜ｓｗ９に分配されている。結局、サーボには、セグメントｓｇ１〜ｓｇ４（ホールド前）に続いて、ｓｗ５〜ｓｗ９が出力され、これらセグメントで表わされる移動が完了した時点でロボットは停止する。ここで注意すべきことは、減速過程を表わすｓｗ５〜ｓｗ９で消化される総移動量は、セグメントｓｇ５、ｓｇ６、ｓｇ７が表わす全移動量より小さいことである。
【００６１】
余った移動量は、一時停止を解除して動作を再開する際に加速過程の中で消化される。即ち、一時停止を解除時には、メモリからセグメントｓｇ５以降の移動量を表わすデータを読み出し、元の指令速度まで加速を行ないながらサーボへ出力する。
【００６２】
加速過程では、セグメントｓｇ５、ｓｇ６、ｓｇ７が表わす全移動量の内、減速過程で消化されたｓｗ５〜ｓｗ９を差し引いたものが消化される。そのために、上述のオーバライドのかけ方を応用して、オーバライド目標値を一時停止前のオーバライド値（例えば１００）とし、徐々にオーバライド目標値までｎ回に分けて上昇させる処理が採用出来る。
【００６３】
動的処理として、上述のオーバライドのかけ方を応用して、オーバライドをｎ回（ｎ≧２）に分けて徐々に１００％まで上昇させるに相当する処理が採用出来る。
【００６４】
結局、動作再開時、サーボには、ｓｗ１０〜ｓｗ１５が出力され、次いで、ｓｇ８以降が出力される。減速過程と加速過程を表わすセグメントｓｗ５〜ｓｗ１５で消化される総移動量は、セグメントｓｇ５、ｓｇ６、ｓｇ７が表わす全移動量と等しくなる。
【００６５】
一時停止の前後でこのような処理を行なうことで、ホールド指令出力時に軌跡を保ったままロボットを減速し、停止にさせ、再動作時にはそこからやはり軌跡を保ったままロボットを加速し、本来の動作に移行させることが出来る。
【００６６】
ホールド時には、動作再開に備えて、減速停止時の動作計画データ、補間データ、フィルタデータ等がそのまま凍結して保存されることは言うまでもない。再開動作時には、オーバライドを０に設定した状態から出発し、ホールド時に保存したデータを復帰させる。その後、再び滑らかに全軸同期させながらオーバライドを徐々に上げていく。これにより、動作計画部、補間部及びフィルタ部までは、あたかもホールドがなかったかのように処理を行いつつ、オーバライドを全軸同期させながら変更することにより、減速停止、及び再開動作を行なうことが可能になる。
【００６７】
なお、アラームによる非常停止を行なう場合には、上述の一時停止手法をそのままは用いないで、直ちにサーボへの出力を止めて、可能な限り早くロボットを停止させる。図６の例で言えば、減速過程を形成するｓｗ６〜ｓｗ９をサーボへの出力しない。
【００６８】
その場合には、非常停止によって軌跡がはずれるので、低率のオーバライドで元の軌跡まで戻り（一旦、位置決め）、しかる後に上述のオーバライド変更手法を適用して加速させても良い。元の軌跡まで戻るに要する移動量を計算するためのデータ（図６の例で言えば、非常停止によってサーボセグメントに未出力のままとなっているｓｗ６〜ｓｗ９のデータ）、プログラム速度のデータ等は、非常停止時点付近でメモリに記憶する。また、元の軌跡に復帰してからの動作のを定めるための諸データも、非常停止時点付近でメモリに記憶する。
【００６９】
以上が実施形態の概略である。以下では、ロボットの軌跡ずれを回避するために実行される動的速度制御の処理をオーバライドの処理、一時停止／動作再開の処理に分けてより詳しく説明する。なお、説明の中で、オーバライド率５０％（β＝５０）とは別のオーバライド率の例として、オーバライド率３０％（β＝３０）のケースを考える。
【００７０】
図８は、本発明の実施形態について、プログラム再生時に動作計画からサーボへの移動指令出力までにロボット制御装置内部で行なわれる処理の枠組みを図４とはやや異なる形式で説明する図である。本図では、各軸動作用の系列と直交動作（直線動作、円弧動作等）用の系列の区分記載は省略す一方、動的シャッタ付のオーバライド処理部を動的速度制御部と表記し、動的速度制御に関連して使用されるメモリを簡略化してブロック表示に加えた。
【００７１】
図８を参照すると、系全体は、動作計画部と、補間処理部と、フィルタ部と、動的速度制御部を備え、動的速度制御部の出力が各軸のサーボ系（モータと表示）へ渡される。そして、処理の流れの中で、動的速度制御部の入力側と出力側にメモリが介在する構成となっている。メモリには、以下に説明する処理に適合するように多数のレジスタ領域が予め用意されている。
【００７２】
なお、各レジスタ領域のことを単にメモリとも言う。また、フィルタ部から出力されたフルタリング処理後のｎ番目の移動指令をＤｎで表記する。図中には、動的速度制御部の入力側において、移動指令ＤｎがメモリＭｎに格納されることが記されている。縦細に記された各ブロックは１単位のメモリ（バッファレジスタ領域）を意味する。入力側メモリＭ１にＤ１、Ｍ２にＤ２、ＭｎにＤｎ（ｎ＝１，２）が各々格納されることが例記されている。
【００７３】
また、動的速度制御部の出力側メモリＯ１〜Ｏ４には、各々Ｄ２、Ｄ２’、Ｄ１、Ｄ１’が格納されることが例記されている。ここで、Ｄ２’、Ｄ１’は各々Ｄ１、Ｄ２にオーバライド値（β／１００）を乗じた値である。このような入力側及び出力側のメモリの使い方の詳細は、以下の処理説明の中で述べる。
【００７４】
［オーバライドの処理］
図９は、動的速度制御部で行なわれるオーバライドの処理を説明するフローチャートである。各ステップの要点は次の通りである。なお、ｉは補間周期のラベリング指標で、初期値はｉ＝１とする。また、オーバライドの現在値βと目標値γを設定するレジスタが用意され、後者には希望するオーバライド目標値γ0 が予め設定される。オーバライドの現在値βの初期値は、初期設定された目標値γ0 と一致した値が自動設定される。
【００７５】
（ステップＳ１）；メモリＭ１、Ｍ２に各々移動指令Ｄｉ、Ｄｉ＋１が格納されているかチェックする。格納いなければステップＳ２へ進み、格納されていればステップＳ３へ進む。
（ステップＳ２）；メモリＭ１、Ｍ２に各々移動指令Ｄｉ、Ｄｉ＋１を格納し、移動指令Ｄｍ１、Ｄｍ２とする。ここで、ｍ１、ｍ２は各々メモリＭ１、Ｍ２に格納されたデータであることを意味するラベルである。
【００７６】
（ステップＳ３）；メモリＭ１に格納されている移動指令Ｍｍ１の値が０であるかチェックする。イエスであればステップＳ４へ進み、ノーであればステップＳ５へ進む。
【００７７】
（ステップＳ４）；メモリＭ２に格納されている移動指令Ｄｍ２をメモリＭ１にコピーし、Ｄｍ１とする（移動指令Ｄｍ１の値の更新）。そして、Ｄｉ＋１の次の動指令Ｄｉ＋２を読み出し、メモリＭ２に格納し、Ｄｍ２とする（Ｄｍ２の値の更新）。
【００７８】
（ステップＳ５）；オーバライドの現在値β％を定め、定められたβ値の下で１補間当り（１ＩＴＰ当り）の移動量（移動量を表わすセグメントの高さ）Ｄｉを算出する。Ｄｉの算出法については後述する。オーバライド現在値βは、目標値γが変化すれば動作中に変化し得る。βの値が動作中に変化するのは、ユーザの途中入力、外部信号による変更、一時停止（ホールド）時、一時停止（ホールド）あるいは非常停止後の運転再開時などである。オーバライドの現在値β％を定める処理については、一時停止（ホールド）とその後の運転再開時の処理などとともに後述する。
（ステップＳ６）；ステップＳ５で算出されたＤｉとメモリＭ１に格納されている移動指令Ｄｍ１とを比較する。Ｄｍ１−Ｄｉ＞０であれば、ステップＳ８へ進み、それ以外（Ｄｍ１−Ｄｉ≧０）であればステップＳ７へ進む。
【００７９】
（ステップＳ７）；メモリＭ１に格納されている移動指令Ｄｍ１を出力側のメモリＯ１へコピーする。次いで、このＤｍ１とＤｍ２を用いて、
Ｄｉ＝Ｄｍ１＋Ｄｍ２＊μ
となるμを求める。そして、このμから、Ｄｉ’＝Ｄｍ２＊μとなるＤｉ’を出力メモリＯ１へ加算する。また、Ｄｍ２をＤｍ２＝Ｄｍ２−Ｄｍ２＊μに更新し、それをメモリＭ１にコピーして新たなＤｍ１（Ｄｍ１の更新）とする。
【００８０】
（ステップＳ８）；ステップＳ５で定められた移動指令Ｄｉを出力側メモリＯ１に書き込む。また、メモリＭ１に格納されている移動指令Ｄｍ１を新たなＤｍ１＝Ｄｍ１−Ｄｉに更新する。
【００８１】
（ステップＳ９）；出力側メモリの移動指令Ｄｏをモータ（各軸サーボ系）へ出力する。
【００８２】
（ステップＳ１０）；ホールド、一時停止、非常停止、動作終了指令（新たなＤｉ出力がフィルタ部からなく、ステップＳ２の処理が出来ない場合に出される）等、ロボットを停止させるための指令がロボット制御装置内部で出力されているかチェックする。イエスであれば、それらのための処理（後述）を実行して、ロボットを停止させる。
ノーであれば、ステップＳ１１へ進む。
（ステップＳ１１）；移動指令の指標値ｉに１を加算し、ステップＳ１へ戻る。
【００８３】
ここで、上記ステップＳ５におけるオーバライド（現在値）がβ％である場合の１補間当り（１ＩＴＰ当り）の移動量Ｄｉ’の計算方法を記しておく。
移動量Ｄｉ’の算出には、フィルタ部から出力される移動指令Ｄｉが一定でない場合にも滑らかに速度変化が得られるように、以下の式を使用する。
【００８４】
現在ｉ番目の１補間時間（ＩＴＰ）ｔ0 当りの移動指令Ｄｉ’は、次式（３）で表わされる。
Ｄｉ’＝Ｖ（ｉ）＊ｔ0                             ・・・（３）
ここで、Ｖ（ｉ）はｉ番目のＩＴＰにおけるオーバライド１００％とした場合の速度である。ｉ番目のＩＴＰにおけるオーバライド１００％とした場合の１ＩＴＰ当りの加速度Ａ（ｉ）は、一応次式（４）で表わされる。
Ａ（ｉ）＝Ｖ（ｉ）−Ｖ（ｉ−１）                  ・・・（４）
速度推移を滑らかにするためにこのＡ（ｉ）を使って、現在ｉ番目のＩＴＰにおける加速度出力の基準式として次式（５）を採用する。
Ａｏｕｔ（ｉ）＝−Ａ（ｉ−１）／２＋３＊Ａ（ｉ）／２ ・・・（５）
これを用いて、現在ｉ番目のＩＴＰにおける速度出力として次式（６）を採用する。
0003673383.tif 000002
ここで、ＯＶＲ＝β／１００、δはＶ（ｉ）の出力をサーボ系へ出し切っている場合にはδ＝１となり、Ｖ（ｉ）の出力をサーボ系へ出し切っていない場合にはδ＝０となる。
【００８５】
例えば、オーバライド１００％の場合には、
Ｖｏｕｔ（ｉ）＝１＊［Ｖ（ｉ）＋Ａｏｕｔ（ｉ）＊（０＋１／２−１／２）＝Ｖ（ｉ）と、当然の結果が得られる。また、オーバライド５０％の場合には、
Ｖｏｕｔ（ｉ）＝０．５＊［Ｖ（ｉ）＋Ａｏｕｔ（ｉ）＊（δ＋０．５／２−１／２）＝Ｖ（ｉ）／２＋Ａｏｕｔ（ｉ）／２＊（δ−１／４）
であり、
δ＝１の場合；Ｖ（ｉ）／２−Ａｏｕｔ（ｉ）／８
δ＝０の場合；Ｖ（ｉ）／２＋Ａｏｕｔ（ｉ）／８
となる。
【００８６】
以上説明した処理を行ないながらコーナ部を含む経路動作を行なった場合にオーバライド値の高低が軌跡に与える影響について、オーバライド率３０％の場合を例にとり、図１５、図１６を参照して説明する。コーナ部を含む経路動作としては、図１４に示すように、位置Ｇ１から位置Ｇ２への直線動作と位置Ｇ２から位置Ｇ３への直線動作を滑らかに接続したものを考える。両動作のプログラム速度は等しいものとする。
【００８７】
×印は教示点Ｇ１、Ｇ２、Ｇ３を表わし、★印は最終的にサーボ系へ出力される移動指令に対応する補間点の位置（補間位置）を表わしている。コーナー部は符号Ａで示されている。一方、範囲Ｂは、始動のための加速及び停止（位置決め）のための減速の区間を表わしている。
【００８８】
本例の場合、コーナー部Ａでは速度一定で★印は等間隔で並ぶが、加減速区間Ｂでは、★印の間隔が徐々に拡大あるいは縮小している。符号ｑ１、ｑ２、ｑ３はコーナー部Ａ内の軌跡を代表する補間点で、コーナー部においてフィルタ部からの出力Ｄ１、Ｄ２に対応する移動区間を形成する。
【００８９】
また、符号ｐ１、ｐ２、ｐ３、ｐ４は加速区間Ｂ内の軌跡を代表する補間点で、加減速区間におけるフィルタ部からの出力Ｄ１、Ｄ２に対応する移動区間を形成するものである。なお、実際に生成される補間点（★印）の数は遥かに大きいが表示のために少数で簡略描示した。
【００９０】
図１５を参照すると、図の左上部に示したように、オーバライド１００％でロボットを動作させた場合のコーナー部Ａの軌跡は、図１４に示した通りで、フィルタ部からの出力Ｄ１、Ｄ２に対応する補間点ｑ１、ｑ２、ｑ３を通る軌跡が得られる。
【００９１】
これに対してオーバライド３０％でロボットを動作させた場合のコーナー部Ａの軌跡は、図１５の右上部に示したようになる。上述したオーバライドの処理（β＝３０）により、フィルタ部からの出力Ｄ１、Ｄ２に対応する補間点ｑ１、ｑ２、ｑ３が、より多数の補間点ｑｄ１〜ｑｄ９（符号は一部のみ表記）に変換される。各区間の計算式は図中に併記した通りである。
【００９２】
ここで重要な事は、これら補間点ｑｄ１〜ｑｄ９は、元のオーバライド１００％時の軌跡上に乗っていることである。この性質は、オーバライド率３０％でなくとも同様に保証されている。一般には、オーバライド値１００％時の補間点を基準にして、オーバライド値に反比例する数の補間点が出力され、しかもそれらはオーバライド値１００％時の軌跡上に並ぶように形成される。従って、オーバライド値の高低によらず、同じ軌跡がコーナー部でも得られることになる。
【００９３】
図１５の左下部及び右下部には、フィルタ部出力段階の移動指令Ｄ１、Ｄ２が、分割出力される様子がセグメントで表示されている。本例のように、一定速度でコーナー部を通過する場合は、各セグメントの高さは一定となる。なお、コーナー部を形成する２つの動作のプログラム速度が異なる場合には、当然、各セグメントの高さは段階的に変化したものとなる。その場合でも、補間点が作る軌跡はオーバライド率に影響されない。
【００９４】
次に加速区間を例にとって、加減速区間における軌跡について考察する。図１６を参照すると、図の左上部に示したように、オーバライド１００％でロボットを動作させた場合の加減速部Ｂ（ここでは加速部で代表）の軌跡は、図１４に示した通りで、フィルタ部からの出力Ｄ１、Ｄ２、Ｄ３に対応する補間点ｐ１、ｐ２、ｐ３、ｐ４を通る軌跡に沿ってプログラム速度へ向かっての加速が行なわれる。
【００９５】
オーバライド３０％でロボットを動作させた場合の加速部Ｂの軌跡は、図１５の右上部に示したように、オーバライド１００％の場合と変らない。但し、上述したオーバライドの処理（β＝３０）により、フィルタ部からの出力Ｄ１、Ｄ２、Ｄ３に対応する補間点ｐ１、ｐ２、ｐ３、ｐ４が、より多数の補間点ｐｄ１〜ｑｄ１１（符号は一部のみ表記）に変換される。各区間の計算式は図中に併記した通りである。
【００９６】
このような性質は、オーバライド率３０％でなくとも同様に保証されている。一般には、オーバライド値１００％時の補間点を基準にして、オーバライド値に反比例する数の補間点が出力され、しかもそれらはオーバライド値１００％時の軌跡上に並ぶように形成される。
【００９７】
図１５の左下部及び右下部には、フィルタ部出力段階の移動指令Ｄ１、Ｄ２、Ｄ３が、分割出力される様子がセグメントで表示されている。加減速部では、各セグメントの高さは段階的に変化したものとなる。この変化は、オーバライド１００％時の速度をその３０％（一般にはβ％）に減じて滑らかに加速する過程を表わしている。加速の最終到達速度は当然プログラム速度の３０％（一般にはβ％）となる。
【００９８】
オーバライドをロボットの動作中に変更する場合には、図１７のフローチャートに示したオーバライド漸近・到達処理を行なう。この処理は後述するホールドの処理や動作再開処理でも利用される。
オーバライド漸近・到達処理の各ステップの要点は次の通りである。
（ステップＬ１）；オーバライド目標値を新値βN に更新する。
【００９９】
（ステップＬ２）；オーバライド目標値の更新の次のＩＴＰからｆ回目のＩＴＰの到来を待つ。ｆは適当な大きさに設定された正整数値である。
（ステップＬ３）；オーバライド現在値をβからβ＋Δβに更新する。Δβは、例えばΔβ＝１（％）などに予め決めておくか、あるいは次式（７）で計算する。
Δβ＝（βN −オーバライド目標値更新直前のβ）／ｎ  ・・・（７）
ここで、ｎはオーバライド現在値を目標値に一致させるまでに要する更新回数で、例えばｎ＝１０などとするか、別途条件から定める（後述するホールド処理の説明を参照）。このような処理を行なうことで、図９のフローチャートにおけるβが新たな目標値に向かって段階的に変更される。
【０１００】
［ホールドの処理］
図１０は、動的速度制御部で行なわれるホールドの処理を説明するフローチャートである。ホールドの処理は、例えばオペレータが一時停止の指令をロボット制御装置に入力した際に実行される。各ステップの要点は次の通りである。
【０１０１】
（ステップＨ１）；ホールド指令がロボット制御装置内部で出力されたか否かＩＴＰ毎にチェックする。出力されたら、ステップＨ２へ進む。
（ステップＨ２）；動的制御部にて現在の速度Ｖから、時間ｔ１経過後に滑らかに速度が０となるように、減速オーバライド値ＯＶｄを制御する。
【０１０２】
（ステップＨ３）；ロボットが停止したか否かＩＴＰ毎にチェックする。停止を確認したら、ステップＨ４へ進む。
（ステップＨ４）；その時点における現在位置（停止位置）、フィルタ内の移動指令のデータ、その他ロボットの動作に関する諸データをメモリ（ホールド時格納用のレジスタ）に格納して、ホールドの処理を終了する。
【０１０３】
ステップＨ２の処理における減速オーバライド値ＯＶｄの制御には、図１７のフローチャートに示したオーバライド漸近・到達処理を利用する。
即ち、ステップＬ１におけるオーバライドの更新目標値βN をβN ＝０とする。また、時間ｔ１のＩＴＰ換算値をｓ１としてｓ１をη分割し（ηは１でない適当な正整数）、ステップＬ２におけるｆをｆ＝ｓ１／ηとする。そして、ステップＬ３におけるΔβの計算式（７）におけるｎをβN ＝０、ｎ＝ηで計算する。
【０１０４】
図１２は、上記のホールド処理を行なった場合の速度推移を表わしている。オーバーライドは段階的に０に向かうが、それが実際の速度に反映し切るには移動指令がサーボ系に出力され切る必要がある。そのため、速度推移は直線的には降下しない。また、動作をより滑らかにするために、Δβの値を一定値とせずに滑らかな関数（例えば指数関数）に従って徐々に変化させて滑らかな加速度推移が得られるようにしても良い。
【０１０５】
［動作再開の処理］
図１１は、動的速度制御部で行なわれる動作再開の処理を説明するフローチャートである。動作再開の処理は、一時停止後に例えば動作再開指令をロボット制御装置に入力した際に実行される。各ステップの要点は次の通りである。
【０１０６】
（ステップＨ１１）；メモリに格納した停止位置を読み出す。
（ステップＨ１２）；現在のロボット位置（例えば、ジョグ送りで移動している）からステップＨ１１で読み出された停止位置までロボットを動作させる。
【０１０７】
（ステップＨ１３）；ステップＨ１２による動作の完了の確認。確認したら、ステップＨ１４へ進む。
（ステップＨ１４）；再開動作に必要なデータをメモリとり読み出し、動作計画部、補間部、フィルタ部へ戻し、ホールド直前の状態を回復させる。
【０１０８】
（ステップＨ１５）；停止位置から、ホールド前と同様に補間動作を行なう。また、同時に動的制御部にて現在のオーバーライド値（β＝０）から、時間ｔ２経過後に滑らかに速度が元の速度ｖとなるように、加速オーバライド値ＯＶａを制御する。
【０１０９】
ステップＨ１５の処理における加速オーバライド値ＯＶａの制御には、図１７のフローチャートに示したオーバライド漸近・到達処理を利用する。
即ち、ステップＬ１におけるオーバライドの更新目標値βN をβN ＝ホールド直前のβの値とする。また、時間ｔ２のＩＴＰ換算値をｓ２としてｓ２をη分割し（ηは１でない適当な正整数）、ステップＬ２におけるｆをｆ＝ｓ２／ηとする。そして、ステップＬ３におけるΔβの計算式（７）におけるｎをβN ＝ホールド直前のβの値０、ｎ＝ηで計算する。
【０１１０】
図１３は、上記のステップＨ１５の処理を行なった場合の速度推移を表わしている。オーバーライドは０から段階的に元の値に向かうが、それが実際の速度に反映し切るには移動指令がサーボ系に出力され切る必要がある。そのため、速度推移は直線的には上昇しない。また、動作をより滑らかにするために、Δβの値を一定値とせずに滑らかな関数（例えば指数関数）に従って徐々に変化させて滑らかな加速度推移が得られるようにしても良い。
【０１１１】
【発明の効果】
本発明によれば、従来技術においてオーバライドの高低、オーバライドの動作中の切換あるいは一時停止に関連して発生していた軌跡ずれが防止出来る。また、そのこととを通して、教示後のテストランによる軌跡確認作業の効率性、信頼性並びに安全性を向上させることが出来る。更に、オーバライドの動作中の切換や一時停止に伴う軌跡ずれをなくなるので、ロボット作業の精度と安全性が向上する。
【図面の簡単な説明】
【図１】プログラム再生時に動作計画からサーボへの移動指令出力までにロボット制御装置内部で行なわれていた従来方式の処理の枠組みを説明する図である。
【図２】図１に示した従来方式の処理に関連して、簡単な例を用いて、軌跡ずれが発生する理由を説明するための図である。
【図３】本発明が適用されるロボット制御装置を含むロボットシステムのハードウェアの構成を例示した要部ブロック図である。
【図４】本発明の実施形態について、プログラム再生時に動作計画からサーボへの移動指令出力までにロボット制御装置内部で行なわれる処理の枠組みを図１と同様の形式で説明する図である。
【図５】オーバライドの処理をフィルタ部出力に５０％のオーバライドをかけた場合を例にとって説明する図である。
【図６】セグメントｓｇ１〜ｓｇ７で表わされる動作と、セグメントｓｋ１〜ｓｋ７で表わされる動作が、ｓｇ６、ｓｇ７とｓｋ１、ｓｋ２が同期する関係で重なり合った場合について、オーバライド処理の影響を説明する図である。
【図７】本実施形態における一時停止関連処理について説明するための図である。
【図８】本発明の実施形態について、プログラム再生時に動作計画からサーボへの移動指令出力までにロボット制御装置内部で行なわれる処理の枠組みを図４とはやや異なる形式で説明する図である。
【図９】動的速度制御部で行なわれるオーバライドの処理の要点を記したフローチャートである。
【図１０】動的速度制御部で、一時停止時に実行されるホールドの処理の要点を記したフローチャートである。
【図１１】動的速度制御部で、一時停止後の動作再開時に実行される処理の要点を記したフローチャートである。
【図１２】ホールド処理を行なった場合の速度推移を表わした図である。
【図１３】動作再開におけるオーバーライド漸増の処理を行なった場合の速度推移を表わした図である。
【図１４】図１５、図１６の説明の前提として想定される経路動作を示した図である。
【図１５】図１４に示した経路動作について、オーバライド値の高低がコーナー部における軌跡に与える影響について、オーバライド率３０％の場合を例にとって説明する図である。
【図１６】図１４に示した経路動作について、オーバライド値の高低が加減速部における軌跡に与える影響について、オーバライド率３０％の場合を例にとって説明する図である。
【図１７】オーバライド漸近・到達処理を説明するフローチャートである。
【符号の説明】
１  アーム先端部
１０  ハンド
３０  ロボット制御装置
３１  ホストＣＰＵ
３２  共有ＲＡＭ
３３  サーボＣＰＵ
３４  サーボアンプ
３５  メモリ
３６  教示操作盤用インターフェイス
３８  入出力装置
３７  教示操作盤
ＲＢ  ロボット
【図１】
0003673383.tif 000003
【図２】
0003673383.tif 000004
【図３】
0003673383.tif 000005
【図４】
0003673383.tif 000006
【図５】
0003673383.tif 000007
【図６】
0003673383.tif 000008
【図７】
0003673383.tif 000009
【図８】
0003673383.tif 000010
【図９】
0003673383.tif 000011
【図１０】
0003673383.tif 000012
【図１１】
0003673383.tif 000013
【図１２】
0003673383.tif 000014
【図１３】
0003673383.tif 000015
【図１４】
0003673383.tif 000016
【図１５】
0003673383.tif 000017
【図１６】
0003673383.tif 000018
【図１７】
0003673383.tif 000019