(57)【要約】【課題】  ロボットがエラー等で非常停止した際に、ロボットを待機位置へ安全に復帰させるためのプログラムの作成。【解決手段】  ロボット制御装置３と復帰プログラム作成装置１０を通信ネットワーク回線４を介して接続しておく。ロボット１がエラー等により動作途中で停止した場合、ロボット１の停止位置を含む情報を復帰プログラム作成装置１０に通知する。復帰プログラム作成装置１０は、自身が持つレイアウト情報、通知された情報、ロボットプログラムの教示点とその属性情報から、ロボット１が停止位置から待機位置まで周辺物体との干渉なしで復帰できるようにプログラムを作成する。同作成されたプログラムをオフラインシミュレーション機能を用いて実行し、干渉の無いことを確認したらロボット制御装置３に転送する。同プログラムの実行により、ロボット１は安全に待機位置に復帰する。【選択図】          図１
2006012074.tif 000002
【特許請求の範囲】
【請求項１】
教示プログラムに基いて作業を行なうロボットと接続され、作業中の前記ロボットが非常停止した際に、該非常停止が起った作業停止位置から待機位置に前記ロボットを移動させるための待機位置復帰プログラムを作成する機能を備えた待機位置復帰プログラム作成装置において、
前記教示プログラムは、当該教示プログラムに含まれる各教示位置毎に、該教示位置が待機位置復帰プログラムにおける教示位置として使用され得るか否かを判断する属性情報を有しており、
前記待機位置復帰プログラム作成装置には、
少なくとも、前記ロボットが実行する可能性のある複数の教示プログラムと、前記ロボットと該ロボット周辺に存在する物体のレイアウト情報とを記憶する手段と、
少なくとも、前記作業停止位置と、前記非常停止により実行停止中となった教示プログラムを識別するための情報と、該実行停止中の教示プログラムの実行停止ブロック情報とを前記ロボットより受信する手段と、
前記実行停止中の教示プログラムの識別情報により該当する教示プログラムを記憶手段から読み出し、該教示プログラムの実行停止ブロックから、プログラム実行方向、又はプログラム実行方向とは逆方向に該教示プログラムの教示位置を順にサーチし、各教示位置の属性情報に基いて待機位置復帰プログラムに取込む教示位置を選択する手段と、
前記作業停止位置と、前記選択した教示位置に基づいて待機位置復帰プログラムを作成する手段と、
該作成された待機位置復帰プログラム及び前記レイアウト情報に基づいてロボット動作のシミュレーションを実行して前記ロボットと周辺の物体との干渉チェックを行なう手段と、
該干渉チェックにより前記ロボットが周辺の物体と干渉しないと判断された場合に、前記作成された待機位置復帰プログラムを前記ロボットに転送する手段とが備わっている、待機位置復帰プログラム作成装置。
【請求項２】
前記待機位置は、前記実行停止中の教示プログラムの最初の教示位置又は最後の教示位置である、請求項１に記載の待機位置復帰プログラム作成装置。
【請求項３】
前記待機位置は、前記実行停止中の教示プログラムに含まれる教示位置の中のいずれかに特定されるものであり、
特定は、前記実行停止中の教示プログラムが有する前記属性情報に基づいて行なわれる、請求項１に記載の待機位置復帰プログラム作成装置。
【請求項４】
前記実行停止中の教示プログラムに含まれる教示位置とは無関係に、前記待機位置を別途設定する手段を備える、請求項１に記載の待機位置復帰プログラム作成装置。
【請求項５】
前記ロボットは溶接ガンを搭載したスポット溶接ロボットであり、
前記属性情報は、当該教示位置がスポット溶接実行位置であるか否かを表わす第１の識別情報を含み、
前記待機位置復帰プログラムは、前記第１の識別情報に基づいて、スポット溶接実行位置以外の教示位置を選択して作成されることを特徴とする、請求項１乃至請求項４の内、何れか１項に記載の待機位置復帰プログラム作成装置。
【請求項６】
前記待機位置復帰プログラムは、前記作業停止位置において前記スポット溶接ガンが開いていない場合には、スポット溶接ガンを復帰動作に先だって開かせる命令を含むように作成されることを特徴とする、請求項５に記載の待機位置復帰プログラム作成装置。
【請求項７】
前記ロボットはハンドを装備したハンドリングロボットであり、
前記属性情報は、当該教示位置において前記ロボットが物体を把持しているか否かを表わす第２の識別情報を含み、
前記ロボットが作業中に物体を実際に把持した把持状態にあるか把持していない非把持状態にあるかを表わし、且つ、リアルタイムに更新記憶される第３の識別情報が、前記作業停止時に該ロボットより待機位置復帰プログラム作成装置に伝えられ、
該作業停止時に、該伝えられた第３の識別情報に基づいて、前記ロボットが前記把持状態と前記非把持状態のいずれにあるかを判断し、把持状態と判断した場合に、前記第３の識別情報が物体を把持しているとしている、前記実行停止中の教示プログラムに含まれる教示位置のみを待機位置復帰プログラムの教示位置に選択して待機位置復帰プログラムを作成することを特徴とする、請求項１乃至請求項４の内、何れか１項に記載の待機位置復帰プログラム作成装置。
【請求項８】
教示プログラムのシミュレーションにより、実行開始からサイクルタイムの半分の時間が経過した時点に実行中のブロックを記憶しておき、前記ロボットから受信した実行停止ブロックが前記記憶されたブロックより前のブロックの場合には教示プログラムの実行方向と逆にサーチした教示位置を選択し、
前記ロボットから受信した実行停止ブロックが前記記憶されたブロックより後のブロックの場合には教示プログラムの実行方向にサーチした教示位置を選択して待機位置復帰プログラムを作成することを特徴とする、請求項１乃至請求項７の内、何れか１項に記載の待機位置復帰プログラム作成装置。
【請求項９】
教示プログラムのシミュレーションによりサイクルタイムを記録しておき、前記ロボットから受信した前記停止情報の経過時間と前記サイクルタイムとを比較し、前記経過時間が前記サイクルタイムの半分以下である場合、実行方向と逆にサーチした教示位置を選択し、前記経過時間が前記サイクルタイムの半分以上の経過時間である場合、教示プログラムの実行方向にサーチした教示位置を選択して待機位置復帰プログラムを作成することを特徴とする、請求項１乃至請求項７の内、何れか１項に記載の待機位置復帰プログラム作成装置。
【請求項１０】
停止したプログラムを実行方向にサーチして教示位置を選択して作成したプログラムと、実行方向と逆にサーチした教示位置を選択して作成したプログラムの両方をシミュレーションして短時間に復帰できる方の待機位置復帰プログラムを使って待機位置に復帰することを特徴とする、請求項１乃至請求項７の内、何れか１項に記載の待機位置復帰プログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、作業中にロボットが意図せざる原因により停止した場合に、同ロボットを待機位置に復帰させるための技術に関し、特に、同復帰のためのプログラムを作成する待機位置復帰プログラム作成装置に関する。
【背景技術】
【０００２】
一般に、ロボットは作業中にエラー、干渉等などにより動作途中で停止することがある。このような意図せざる原因によるロボットの作業停止（以下、「非常停止」とも言う）があった場合、ロボットを一旦待機位置に戻し、ロボットシステムの作業全体を最初から実行し直すことが必要となることが多い。そして、作業途中で停止したロボットを待機位置に戻す具体的な方法としては、手動操作による移動（ジョグ操作による移動）が一般に用いられている。
【０００３】
即ち、熟練したオペレータが、復旧のためにシステムの非常停止を解除し、ロボットをジョグ送りで動作させて待機位置まで移動させているのが現状である。そのため、システムを再起動させて作業を再度実行するまでにはかなりの時間がかかっていた。特に、ロボットがワークセル内に複数台存在する場合、システムに異常が発生すればそれらロボットはすべて停止するので、１台ずつジョク操作で移動させる作業が必要になり、非常に作業負担が大きい。そして、このような状況があるにも関わらず、上記問題を解決する具体的な技術の提案が文献中で行なわれた形跡は見い出せない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
そこで本発明の目的は、上記問題を解決するために、作業中にロボットが意図せざる原因により停止した場合に、作業者に熟練と時間を要求することなく、同ロボットを待機位置に復帰させるためのプログラム（以下、「待機位置復帰プログラム」という）を作成する待機位置復帰プログラム作成装置を提供することにある。
【課題を解決するための手段】
【０００５】
本発明は、オフラインプログラミング機能を持つ装置を待機位置復帰プログラム作成装置に用い、同装置を通信手段（例えば通信ネットワーク）で接続し、エラーなどでロボットが停止した場合は、ロボットから停止に関連した所要諸情報を待機位置復帰プログラム作成装置に送り、オフラインシステム上で安全に待機位置へ復帰できるプログラムを作成し、シミュレーションを実行して安全が確認された後、その作成されたプログラムをロボットにダウンロードして実行することにより、特に熟練者でなくとも、安全に、しかも短時間で待機位置へロボットを復帰させることを可能にするものである。
【０００６】
より具体的に言えば、本発明は、教示プログラムに基いて作業を行なうロボットと接続され、作業中の前記ロボットが非常停止した際に、該非常停止が起った作業停止位置から待機位置に前記ロボットを移動させるための待機位置復帰プログラムを作成する機能を備えた待機位置復帰プログラム作成装置に関し、各請求項の発明は次のような特徴を有する。
【０００７】
請求項１に係る発明の特徴は、前記教示プログラムが、当該教示プログラムに含まれる各教示位置毎に、該教示位置が待機位置復帰プログラムにおける教示位置として使用され得るか否かを判断する属性情報を有しており、前記待機位置復帰プログラム作成装置には、少なくとも、前記ロボットが実行する可能性のある複数の教示プログラムと、前記ロボットと該ロボット周辺に存在する物体のレイアウト情報とを記憶する手段と、少なくとも、前記作業停止位置と、前記非常停止により実行停止中となった教示プログラムを識別するための情報と、該実行停止中の教示プログラムの実行停止ブロック情報とを前記ロボットより受信する手段と、前記実行停止中の教示プログラムの識別情報により該当する教示プログラムを記憶手段から読み出し、該教示プログラムの実行停止ブロックから、プログラム実行方向、又はプログラム実行方向とは逆方向に該教示プログラムの教示位置を順にサーチし、各教示位置の属性情報に基いて待機位置復帰プログラムに取込む教示位置を選択する手段と、前記作業停止位置と、前記選択した教示位置に基づいて待機位置復帰プログラムを作成する手段と、該作成された待機位置復帰プログラム及び前記レイアウト情報に基づいてロボット動作のシミュレーションを実行して前記ロボットと周辺の物体との干渉チェックを行なう手段と、該干渉チェックにより前記ロボットが周辺の物体と干渉しないと判断された場合に、前記作成された待機位置復帰プログラムを前記ロボットに転送する手段が備わっていることである。
【０００８】
ここで、前記待機位置は、前記実行停止中の教示プログラムの最初の教示位置又は最後の教示位置であって良い（請求項２に記載の発明）。また、前記待機位置は、前記実行停止中の教示プログラムに含まれる教示位置の中のいずれかに特定されるものであり、特定は、前記実行停止中の教示プログラムが有する前記属性情報に基づいて行なわれるものであって良い（請求項３に記載の発明）。あるいは、前記実行停止中の教示プログラムに含まれる教示位置とは無関係に、前記待機位置を別途設定する手段を設けることもできる（請求項４に記載の発明）。
【０００９】
上記いずれの発明においても、前記ロボットは溶接ガンを搭載したスポット溶接ロボットであって良い。その場合、前記属性情報は、当該教示位置がスポット溶接実行位置であるか否かを表わす第１の識別情報を含み、前記待機位置復帰プログラムは、前記第１の識別情報に基づいて、スポット溶接実行位置以外の教示位置を選択して作成されるようにすることができる（請求項５に記載の発明）。ここで、前記待機位置復帰プログラムは、前記作業停止位置において前記スポット溶接ガンが開いていない場合には、スポット溶接ガンを復帰動作に先だって開かせる命令を含むように作成されることが好ましい（請求項６に記載の発明）。
【００１０】
また、前記ロボットはハンドを装備したハンドリングロボットであっても良い。その場合、前記属性情報は、当該教示位置において前記ロボットが物体を把持しているか否かを表わす第２の識別情報を含み、前記ロボットが作業中に物体を実際に把持した把持状態にあるか把持していない非把持状態にあるかを表わし、且つ、リアルタイムに更新記憶される第３の識別情報が、前記作業停止時に該ロボットより待機位置復帰プログラム作成装置に伝えられ、該作業停止時に、該伝えられた第３の識別情報に基づいて、前記ロボットが前記把持状態と前記非把持状態のいずれにあるかを判断し、把持状態と判断した場合に、前記第３の識別情報が物体を把持しているとしている、前記実行停止中の教示プログラムに含まれる教示位置のみを待機位置復帰プログラムの教示位置に選択して待機位置復帰プログラムを作成するようにすることができる（請求項７に記載の発明）。
【００１１】
更に、上述した各発明において、教示プログラムのシミュレーションにより、実行開始からサイクルタイムの半分の時間が経過した時点に実行中のブロックを記憶しておき、前記ロボットから受信した実行停止ブロックが前記記憶されたブロックより前のブロックの場合には教示プログラムの実行方向と逆にサーチした教示位置を選択し、前記ロボットから受信した実行停止ブロックが前記記憶されたブロックより後のブロックの場合には教示プログラムの実行方向にサーチした教示位置を選択して待機位置復帰プログラムを作成することもできる（請求項８に記載の発明）。
【００１２】
また、教示プログラムのシミュレーションによりサイクルタイムを記録しておき、前記ロボットから受信した前記停止情報の経過時間と前記サイクルタイムとを比較し、前記経過時間が前記サイクルタイムの半分以下である場合、実行方向と逆にサーチした教示位置を選択し、前記経過時間が前記サイクルタイムの半分以上の経過時間である場合、教示プログラムの実行方向にサーチした教示位置を選択して待機位置復帰プログラムを作成するようにすることもできる（請求項９に記載の発明）。
【００１３】
更に、停止したプログラムを実行方向にサーチして教示位置を選択して作成したプログラムと、実行方向と逆にサーチした教示位置を選択して作成したプログラムの両方をシミュレーションして短時間に復帰できる方の待機位置復帰プログラムを使って待機位置に復帰するようにすることもできる（請求項１０に記載の発明）。
【発明の効果】
【００１４】
本発明によれば、ロボットがエラーなどにより動作途中で停止してシステム全体の作業を最初から実行したい場合に、ロボットを簡単且つ安全に短時間で待機位置に復帰させることができるようになる。これにより、従来エラーなどによる停止によって生じていた生産性の低下が大幅に緩和される。
【発明を実施するための最良の形態】
【００１５】
図１は、本発明の１つの実施形態における全体構成の概略を表わした図である。同図において、符号１はアーム先端に作業ツール２を装着したロボット（機構部）で、ロボット制御装置３に接続されている。作業ツール２には種々のものがあり、本発明を適用する上で特に制限はないが、ここでは先ず一例としてスポット溶接ガンを考える。ロボット制御装置３は、ＣＰＵ、メモリ、サーボ制御部、ネットワーク回線用の通信インターフェイス、外部信号入出力装置（Ｉ／Ｏボート）、教示操作盤用インターフェイス等を有する通常のもので、教示されたロボットプログラムに基づいてロボット１及び作業ツール２等の動作を制御する。なお、教示操作盤用インターフェイスを介して接続される教示操作盤や、作業ツール２の動作に必要な諸装置（例えばスポット溶接ガン用の溶接電源）の図示は省略した。
【００１６】
符号４は周知の通信ネットワーク回線で、同ネットワーク回線にはロボット制御装置３とともに復帰プログラム作成装置１０が接続されている。復帰プログラム作成装置１０には、例えばパーソナルコンピュータを利用することができ、後記する復帰プログラムの作成等の処理のためのソフトウェアが装備されている点を除けば、従来より使用されているオフラインプログラミング／シミュレーション装置と特にかわりはない。即ち、復帰プログラム作成装置１０は、本体部にＣＰＵ、メモリ、ネットワーク回線用の通信インターフェイス、外部信号入出力装置（Ｉ／Ｏボート）等を備える他、キーボード１１、ディスプレイ（例えばＬＣＤ）１２等を備えている。
【００１７】
また、オフラインプログラミング／シミュレーション装置としての基本的な機能として、ロボット１、作業ツール２の他、ワーク、治具、周辺機器（図示省略）等の３次元モデルの形状／レイアウトデータ等を用いてワークセルを定義し、記憶する機能、ワークセル内で教示点データ等を与えてロボット、作業ツール等を動作させるロボットプログラムをオフラインで作成する機能、その作成されたロボットプログラムあるいは外部より転送されたロボットプログラムのシミュレーションをオフラインで実行する機能、その際に上記の３次元モデルの形状／レイアウトデータを使って、そのシミュレートしたロボットプログラムについて干渉有無をチェックする機能等を備えている。なお、これら機能自体は周知なので、個々の説明は省略する。
【００１８】
以下、上記した構成と機能を前提に、ロボット１がエラーや他の機器の問題などにより動作途中で停止した場合に、ロボット１を待機位置に復帰させる手順について説明する。なお、復帰プログラム作成装置１０上には既にロボット１を含むシステムに対応するワークセルが定義され、ロボット１、作業ツール２の他、ワーク、治具、周辺機器等の３次元モデルの形状／レイアウトデータ等が用意されているものとする。
【００１９】
［準備１］
準備の１つとして、復帰プログラム作成装置１０上に、ロボット１を含むシステムが実行する可能性のあるロボットプログラム（１つまたは複数）を用意し、各プログラムに含まれる教示点について必要な「属性情報」を付与する。ここで、教示点についての「属性情報」とは、後述する待機位置復帰プログラムの作成にあたって、適正な復帰経路を形成するために有用な情報のことであり、具体例については後述する。
【００２０】
復帰プログラム作成装置１０上に用意されるロボットプログラムは、例えば復帰プログラム作成装置１０のプログラミング機能を使って作成されるが、他のオフラインプログラミング装置で作成したもの、あるいはロボット制御装置３に既に教示されたものを転送する形で用意されても良い。
【００２１】
但し、復帰プログラム作成装置１０上にロボットプログラムが用意された段階では、上記の「属性情報」が未付与であるのが一般的であるので、各ロボットプログラムに含まれる教示点の性格を検討し、ロボットの復帰経路の決定に有用である可能性のある属性情報を必要に応じて付与し、記憶する。このような属性情報の例としてここでは下記の３種の情報を採用し、まとめて３桁のバイナリコード“ｆｇｈ”（ｆ、ｇ、ｈ；０または１）で表わす。
【００２２】
（１）ｆ1 ；教示点採用可否情報＝ロボットの待機位置復帰プログラム中における教示点として採用することの適否を表わす情報で、「教示点として採用不可」であればｆ＝０、「教示点として採用可」であればｆ＝１とする。  
例えば、本来の作業（ここではスポット溶接作業）の遂行のためには必要な教示点であるが、復帰経路中の教示点に採用すると無駄な寄り道となることが明らかな教示点にはｆ＝０が付与される。復帰経路中の教示点に採用しても不都合がないと考えられる点には、ｆ＝１を付ける。
【００２３】
（２）ｇ；待機位置採用可否情報＝ロボットの待機位置復帰プログラム中において、ロボットの待機位置（復帰位置）として好適であると考えられる教示点に、ｇ＝１を付与する。それ以外の教示点についてはｇ＝０を付与する。  
ｇ＝１を付与する教示点は、１つとは限らない。ｇ＝１を付与した教示点を２個以上とした場合には、後述するように、復帰プログラムの作成に際して、少なくとも復帰プログラム実行時（ロボットが実際に復帰動作を行なう時）にはそれら２個以上の「復帰位置候補」の内のいずれか１つが選択されるようにする必要がある。典型的な復帰位置としては、当該ロボットプログラムの教示経路の始点または終点の一方、あるいは、両方が考えられる。
【００２４】
なお、当該ロボットプログラムに含まれるいずれの教示点にもこの（２）の属性情報を付与しなかった場合には、復帰プログラム作成に際して、自動的（強制的）に教示経路の始点（または終点）を待機位置に指定することも可能である。但し、本発明は、当該ロボットプログラムの教示経路の始点、終点のいずれでもない点を復帰プログラムにおける待機位置に指定することを排除するものではない。同様に、本発明は、当該ロボットプログラムに含まれる教示点以外の点を復帰プログラムにおける複数の教示点の一部に採用することも排除しない。
【００２５】
（３）ｈ；作業対象物との接触有無情報＝作業ツール２が作業対象物（ワーク等）と接触するようにプログラムされている教示点に、「作業対象物との接触」を表わす情報としてｈ＝１を付与する。それ以外の教示点にはｈ＝０を付与する。例えばここで想定しているスポット溶接であれば、スポット溶接（ガン開閉）を行なう教示点にｈ＝１の情報を付与する。また、ロボットハンドによるハンドリング作業であれば、把持開始位置から把持終了位置までに含まれる各教示点にｈ＝１を付与する。
【００２６】
図２は、スポット溶接を行なうロボットプログラムに計１３個の教示点Ｐ１〜Ｐ１３が含まれている場合について、復帰プログラム作成装置１０のメモリに記憶される属性情報（３桁コード）の例を示したものである。また図３は、ロボットハンドを用いたハンドリングを行なうロボットプログラムに計１３個の教示点Ｑ１〜Ｑ１３が含まれている場合について、図２と同様に形式で、付与される属性情報（コード）の例を示したものである。なお、Ｐ１３とＰ１３、Ｑ１３とＱ１３について、それらが同位置である場合（Ｐ１＝Ｐ１３；Ｑ１＝Ｑ１３）もああり得る。
【００２７】
このような属性情報（コード）の付与作業は、オペレータが例えばディスプレイ１２上に教示点のデータを読み出してキーボード１１を使ってコード入力することによって行なえば良い。図３には、ロボットハンドを用いたハンドリングを行なうロボットプログラムに計１３個の教示点Ｑ１〜Ｑ１３が含まれている場合について、図２と同様に形式で、付与される属性情報（コード）の例を示したものである。  
［準備２］
続いて、ロボット１の実機（ロボット制御装置３）について、初期設定作業を行なう。上記の［準備１］においてオフラインプログラミオング等により用意されたロボットプログラムを、ロボット制御装置３にダウンロードする。ここで、教示点の属性情報はロボット制御装置３に伝えることは不要である。また、元々ロボット制御装置３に教示済みのロボットプログラムを復帰プログラム作成装置１０に転送し、［準備１］で属性情報を付与しただけであれば、改めてダウンロードする必要はない（教示内容に修正があれば修正されたロボットプログラムをダウンロードする）。
【００２８】
このようにしてロボット制御装置３に用意されたロボットプログラムについて、必要に応じて教示位置の修正を行なう。例えば、そのロボットプログラムが復帰プログラム作成装置１０上でオフライン作成されたものである場合、ワークセルで設定されているレイアウト情報と、実際の作業を行なうシステムのレイアウトとの間には位置ズレが存在することが多いので、これを補正するために、ダウンロードされたロボットプログラムの教示位置の修正を行なう。
【００２９】
このように、必要に応じて教示位置修正を行なった後、そのロボットプログラムを実行し、実際のシステムを動作させてみる。そして、その際には、プログラムのサイクルタイムと実行履歴を記録する。万一、正常に動作しない場合には、ロボットプログラムを修正し、正常に動作するようにする。正常に動作する条件で実行履歴及びサイクルタイムが記録できたら、そのロボットプログラム、実行履歴及びサイクルタイムを復帰プログラム作成装置１０にアップロードする。なお、複数の作業を行うロボットの場合は、複数の実行履歴とサイクルタイムを記録してオフラインプログラミングシステムにアップロードする。  
以上で、エラー発生時等によりロボット１が止まった場合に、停止したロボット１を待機位置に安全、迅速に自動復帰させるための準備が完了する。
【００３０】
［ロボット停止から、待機位置への復帰まで］
ロボット１が、ロボット自身のエラー、周辺機器の問題などにより、ロボットプログラム実行途中で停止した時、オペレータは復帰プログラム作成装置１０に対して待機位置への復帰を例えばキーボード１１の操作で指示する。すると、復帰プログラム作成装置１０は、必要な情報をロボット制御装置３から取得し、復帰プログラムを自動作成し、安全確認の上、ロボット制御装置３に転送する。ロボット制御装置３はこれを受けて復帰プログラムを実行し、ロボット１を待機位置に安全、迅速に自動復帰させる。
【００３１】
図４は、この一連のプロセスで実行される処理手順の概略を記したフローチャートで、各ステップの要点は次の通りである。なお、説明中で、適宜、図２に示した如く属性情報を付与した教示点Ｐ１〜Ｐ１３に言及する。また、図３に示した如く属性情報を付与した教示点Ｑ１〜Ｑ１３については、括弧書きで言及する。
ステップＳ１；復帰プログラム作成装置１０は、ロボット制御装置３に停止情報の問い合わせ信号を送信する。
【００３２】
ステップＳ２；上記問い合わせ信号を受信したロボット制御装置３は、その問い合わせへの回答として、下記の情報を復帰プログラム作成装置１０に送信する。  
（１）停止プログラム識別情報＝実行途中のロボットプログラムを特定する情報。例えばロボットプログラムのコードネーム。
【００３３】
（２）停止位置情報＝ロボット停止位置の前後の教示点を特定する情報（区間途中での停止の場合）または停止している教示点（教示点上での停止の場合）を特定する情報。  
（３）経過時間情報＝そのロボットプログラム起動時からエラー等による停止に至るまでの経過時間を表わす情報。
【００３４】
ステップＳ３；復帰プログラム作成装置１０は、受信した停止プログラム識別情報に基づいて、該当するロボットプログラムを、前述した各教示点の属性情報、サイクルタイム／実行履歴の情報とともにメモリから読み出す。  
ステップＳ４；停止までの経過時間がサイクルタイムの２分の１以下であれば、ステップＳ５へ進み、そうでなければステップＳ６へ進む。
【００３５】
ステップＳ５；停止位置以前の教示点を逆方向にサーチし、サーチされた全教示点を「復帰経路での教示点採用候補」としてリストアップする。例えば図２（図３）で示した教示点の例で、停止位置がＰ６とＰ７（Ｑ６とＱ７）の間にある時、Ｐ６、Ｐ５、Ｐ４、Ｐ３、Ｐ２、Ｐ１（Ｑ６、Ｑ５、Ｑ４、Ｑ３、Ｑ２、Ｑ１）がリストアップされる。
【００３６】
ステップＳ６；停止位置以降の教示点を順方向にサーチし、サーチされた全教示点を「復帰経路での教示点採用候補」としてリストアップする。例えば図２（図３）で示した教示点の例で、停止位置がＰ６とＰ７の間にある時、Ｐ７、Ｐ８、Ｐ９、Ｐ１０、Ｐ１１、Ｐ１２、Ｐ１３（Ｑ７、Ｑ８、Ｑ９、Ｑ１０、Ｑ１１、Ｑ１２、Ｑ１３）がリストアップされる。
【００３７】
ステップＳ７；ステップＳ５またはステップＳ６でリストアップされた各教示点について、「一次審査」を実行する。この一次審査では、属性情報のｆの値＝０であるものを排除する。上記の例では、Ｐ５、Ｐ３またはＰ７、Ｐ９、Ｐ１１（Ｑ５、Ｑ３またはＱ７、Ｑ９、Ｑ１１が排除され、Ｐ６、Ｐ４、Ｐ２、Ｐ１またはＰ８、Ｐ１０、Ｐ１２、Ｐ１３（Ｑ６、Ｑ４、Ｑ２、Ｑ１またはＱ８、Ｑ１０、Ｑ１２、Ｑ１３）が候補に残る。
【００３８】
ステップＳ８；残った候補の中から属性情報のｇの値＝１であるものを待機位置（復帰位置）に決定する。図２（図３）のケースでは、Ｐ１またはＰ１３（Ｑ１またはＱ１３）が待機位置（復帰位置）に決定される。なお、もしも属性情報のｇの値＝１であるものが２個以上あり得るならば、適当な優先ルールを予め定めておき、必ず唯一個に絞れるようにする。
【００３９】
ステップＳ９；残っている候補の中から、ステップＳ８で待機位置（復帰位置）に決定されたものを除いたものについて、「二次審査」を実行する。この二次審査は、属性情報のｈの値に基づくものとする。既述の通り、ｈの値は作業対象物との接触の有無に関する情報である。従って、復帰プログラムにおける教示点への採用の適否の観点から検討して、ｈ＝０とｈ＝１のいずれかが「不適」であればそれを排除するすることが望まれる。  
例えば図２の例のように、スポット溶接ロボットの教示点の場合、接触ありはスポット溶接を実行する教示点に相当するので、ｈ＝１の教示点をこの二次審査で排除する。なお、図２の例では、スポット溶接が行なわれるＰ３、Ｐ５、Ｐ７、Ｐ９、Ｐ１１は、ｆ＝０として既にステップＳ８で排除されているので、この二次審査で排除される教示点はない。
【００４０】
一方、図３の例のように、ハンドリングロボットの教示点の場合、接触ありはハンドによる対象物を把持した状態にある教示点に相当するので、ｈ＝１（接触あり）の教示点を残し、ｈ＝０（接触なし）の教示点を復帰途中の教示点（待機位置自身は除く）から排除するのが好ましいと考えられる。  
そこで、図３の例では、待機位置以外で残っている候補から、対象物を把持していない状態にある点、Ｑ２、Ｑ４を排除する。  
結局、最終的に残る教示点は、図２の例（Ｐ６、Ｐ７の中間での停止を想定）、図３の例（Ｑ６、Ｑ７の中間での停止を想定）で各々次のようになる。
●図２の例で経過時間＜サイクルタイム×（１／２）の場合；
Ｐ６、Ｐ４、Ｐ２、Ｐ１
●図２の例で経過時間≧サイクルタイム×（１／２）の場合；
Ｐ８、Ｐ１０、Ｐ１２、Ｐ１３
●図３の例で経過時間＜サイクルタイム×（１／２）の場合；
Ｑ６、Ｑ１
●図３の例で経過時間≧サイクルタイム×（１／２）の場合；
Ｑ８、Ｑ１０、Ｑ１２、Ｑ１３
以上で、当該実行途中で停止したロボットプログラムに含まれる教示点の内、復帰プログラムの教示点に使用される教示点が決定されることになる。
【００４１】
ステップＳ１０；上記決定された教示点を用いて、復帰プログラムを作成する。復帰経路は上記の各ケースについて次のようになる。  
●図２の例で経過時間＜サイクルタイム×（１／２）の場合；
Ｐ６→Ｐ４→Ｐ２→Ｐ１
●図２の例で経過時間≧サイクルタイム×（１／２）の場合；
Ｐ８→Ｐ１０→Ｐ１２→Ｐ１３
●図３の例で経過時間＜サイクルタイム×（１／２）の場合；
Ｑ６→Ｑ１
●図３の例で経過時間≧サイクルタイム×（１／２）の場合；
Ｑ８→Ｑ１０→Ｑ１２→Ｑ１３
なお、移動の運動形式（直線、円弧、各軸等）については、例えば「直線」を指定しておけば良い。あるいは、停止した当該ロボットプログラムの実行履歴に基づいて、他の選択ルールを定めても良い。また、指令速度、加減速の定数については、安全性を考慮して小さめの値が自動設定されるようにしておけば良い。
【００４２】
ステップＳ１１；作成された復帰プログラムについて、復帰プログラム作成装置１０のオフラインシミュレーション機能を用いてシミュレーションを実行する。
【００４３】
ステップＳ１２；復帰プログラム作成装置１０の干渉有無チェック機能等を使って、干渉有無チェックを行なう。もし、干渉が有ればステップＳ１３へ進み、無ければステップＳ１４へ進む。  
ステップＳ１３；復帰プログラムの修正を行なう。オペレータは、復帰プログラムの経路をディスプレイ１２上に表示するなどして干渉の原因を調査し、必要な復帰プログラムの修正を行なう。例えば、干渉を避けるために、停止した当該ロボットプログラムにはなかった教示点を追加したり、あるいは、待機位置の修正を行なったりする。修正が終わったらステップＳ１１へ戻る。
【００４４】
なお、当該システム中にロボットが複数台あり、当該ロボット１が他のロボットと干渉する場合には、一旦処理を中断し、干渉相手のロボットについて、上記ステップＳ１以下を実行して先に待機位置へ復帰させる。その後、当該ロボット１について、ステップＳ１１から再実行する。
【００４５】
ステップＳ１４；復帰プログラムをロボット制御装置３へ送信する。  
ステップＳ１５；ロボット制御装置３は、受信した復帰プログラムを実行し、ロボット１を待機位置へ移動させ、処理を終了する。
【００４６】
以上の処理手順はあくまで例示であり、例えば次のような変形が可能である。
（１）待機位置について、実行停止中の教示プログラムに含まれる教示位置とは無関係に予め設定しておく。例えば、上記の図２の例で、Ｐ１（＝Ｐ１３）の近傍にＰ０を別途設定しておき、経過時間＜サイクルタイム×（１／２）の場合の復帰経路を、Ｐ６→Ｐ４→Ｐ２→Ｐ１→Ｐ０、経過時間≧サイクルタイム×（１／２）の場合の復帰経路を、Ｐ８→Ｐ１０→Ｐ１２→Ｐ１３→Ｐ０などとしても良い。
【００４７】
（２）上記の例では経過時間の大小をサイクルタイム×（１／２）との比較して復帰経路の順方向／逆方向を決めたが、常に一方（例えば逆方向）とするケースもあり得る。また、ステップＳ１０で順方向／逆方向両方の復帰プログラムを作成し、ステップＳ１１、Ｓ１２でそれらのシミュレーションと干渉チェックを行い、干渉が無い条件で、シミュレーションのサイクルタイムの短い方を採用してロボット制御装置３に送信するようにしても良い。
【００４８】
（３）ロボット制御装置３がステップＳ１５で復帰プログラムを実行する場合、ロボットの移動前に安全確保等の観点から必要な動作があれば、それを実行してから復帰プログラムを実行することが好ましい。例えばスポット溶接ロボットの場合、溶接ガンの開放／非開放をチェックし、溶接ガンが非開放状態にあれば、溶接ガンの開放を行なってからロボット移動が行なわれるようにする。そのための命令は、例えば復帰プログラムの冒頭部分に書き入れるようにすれば良い。
【００４９】
図５は、上記図２の例（スポット溶接ロボット）に即して、途中停止したロボットプログラムの経路（Ｐ１→Ｐ２→Ｐ３→・・・・・→Ｐ１２→Ｐ１３）と、２つの復帰経路の例を表わしたものである。同図において、復帰経路ＲＴ１（ＳＴ１→Ｐ４→Ｐ２→Ｐ１）は、サイクル前半の位置ＳＴ１で途中停止が起ったケースで選択される復帰経路の例を表わしている。また、復帰経路ＲＴ２（ＳＴ２→Ｐ６→Ｐ８→Ｐ１０→Ｐ１２→Ｐ１３）は、サイクル後半の位置ＳＴ２で途中停止が起ったケースで選択される復帰経路の例を表わしている。
【００５０】
なお、前述の「Ｐ６とＰ７の間で途中停止」のケースを図５におけるＳＴ２に対応させた場合には、上述のステップＳ４での判断出力は“イエス”である。従って、ステップＳ６を経てステップＳ７以下へ進み、復帰経路ＲＴ２が選択され、実行されることになる。この図に示した例からも、上記の処理手順で選択される復帰経路が、安全且つ短時間での復帰を可能にするものであることが理解される。
【図面の簡単な説明】
【００５１】
【図１】本発明の１つの実施形態における全体構成の概略を表わした図である。
【図２】スポット溶接を行なうロボットプログラムに計１３個の教示点が含まれている場合について、各教示点Ｐ１〜Ｐ１３に付与され、復帰プログラム作成装置１０のメモリに記憶される属性情報（コード）の例を示したものである。
【図３】ロボットハンドを用いたハンドリングを行なうロボットプログラムに計１３個の教示点が含まれている場合について、図２と同様の形式で、付与される属性情報（コード）の例を示したものである。
【図４】本発明の実施形態において、ロボットの停止から待機位置への復帰までの一連のプロセスで実行される処理手順の概略を記したフローチャートである。
【図５】スポット溶接ロボットのケースについて、途中停止したロボットプログラムの経路と、２つの復帰経路を例示したものである。
【符号の説明】
【００５２】
１  ロボット（機構部）
２  作業ツール（スポット溶接ガン）
３  ロボット制御装置
４  通信ネットワーク回線
１０  復帰プログラム作成装置（パーソナルコンピュータ）
１１  キーボード
１２  ディスプレイ
【図１】
2006012074.tif 000003
【図２】
2006012074.tif 000004
【図３】
2006012074.tif 000005
【図４】
2006012074.tif 000006
【図５】
2006012074.tif 000007