(57)【特許請求の範囲】
【請求項１】
作業ロボットの３次元モデルと、ワークおよび周辺装置の３次元モデルとを画面上に表示させ、ロボットプログラムに従って作業ロボットの３次元モデルを模擬的に再生動作させて、再生動作の結果に応じてロボットプラグラムを修正するようにした作業ロボットのオフラインティーチング装置であって、
作業ロボットの３次元モデルの表面の位置若しくは表面から離れた外側の位置に、干渉チェック用の線分を、表面に沿って複数、設定し、
かつ、作業ロボットの３次元モデルの各部位のうち、ワークおよび周辺装置の３次元モデルと干渉する可能性の高い部位ほど、干渉チェック用線分の設定密度を高く設定し、
この干渉チェック用の複数の線分それぞれが、ワークおよび周辺装置の３次元モデルと交差することを判定することによって、作業ロボットがワークおよび周辺装置に干渉することを判断する干渉チェック処理が行われること
を特徴とする作業ロボットのオフラインティーチング装置。
【請求項２】
作業ロボットの３次元モデルが、実際の作業ロボットと同じ速度で再生動作するように、表示画面を更新する画面更新処理が行われる請求項１記載の作業ロボットのオフラインティーチング装置であって、
画面が更新される時間内に、干渉チェック処理が終了するように、干渉チェック処理に用いられる干渉チェック用線分の本数を調整すること
を特徴とする作業ロボットのオフラインティーチング装置。
【請求項３】
作業ロボットの３次元モデルの各部位のうち、ワークおよび周辺装置の３次元モデルと干渉する可能性の高い部位は、溶接トーチおよび／またはアームであること
を特徴とする請求項１記載の作業ロボットのオフラインティーチング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、作業ロボットとワークおよび周辺装置をパーソナルコンピュータの画面上に表示させて、ロボットプログラムに従って作業ロボットを再生動作させて、再生動作の結果に応じてロボットプログラムを修正するようにした作業ロボットのオフラインティーチング装置に関するものである。
【背景技術】
【０００２】
（従来技術１）
アーク溶接等を行う溶接ロボットは、最適溶接位置を確保するポジショナやスライダ（走行台車）や治具と組み合わせてワークを溶接する作業を行う。なお、これらポジショナ、スライダ、治具などを、以下ロボットの「周辺装置」という。
【０００３】
溶接ロボットなどの作業ロボットでは、作業ロボットの各軸が駆動制御されることにより、溶接トーチの先端が溶接線に沿って移動され、溶接作業が行われる。ここで溶接作業を行わせるためには、作業ロボットの作業内容を教示して、作業ロボットの制御プログラムとしてのロボットプログラムを作成する必要がある。
【０００４】
作業ロボットに作業内容を教示する方法には、作業者が作業ロボットを手動動作させることにより所望の位置、姿勢角度を教示するティーチングプレイバック方式と、作業ロボットのコントローラとは独立したコンピュータ上に作業ロボットやワークのモデルを構築し、そのモデルを使用してロボットの位置、姿勢角度を教示するオフラインティーチング方式とがある。
【０００５】
ティーチングプレイバック方式によるときは、生産設備や治具、対象ワークが現実に揃っている必要があり、ティーチング作業をしているときは設備等を占有する。
【０００６】
そこで溶接分野などにおけるティーチングは、外部から数値データやプログラム形式で情報を入力することにより生産ラインから離れてティーチングできるオフラインティーチング方式が主流となっている。
【０００７】
作業ロボットの３次元モデルと、ワークおよびポジショナなどの周辺装置の３次元モデルとを、パーソナルコンピュータ（以下、パソコンという）の画面上に表示させ、ロボットプログラムに従って、作業ロボットをパソコンの画面上で模擬的に再生動作させて、再生動作の結果に応じて、ロボットプログラムを修正するという作業ロボットのオフラインティーチング装置は、後掲する特許文献１にみられるように、既に公知となっている。
【０００８】
オフラインティーチング装置では、作業ロボットの３次元モデルを、実際の作業ロボットと同じ速度でパソコンの画面上で再生動作させる必要がある。これは、作業ロボットが実際に作業を行うときの作業時間を知るためと、実際の作業ロボットと同じ速度で再生動作させなければ検出できないエラーをチェックするためである。たとえば特異点付近での作業ロボットの動きにエラーが発生していないかなどがチェックされる。
【０００９】
こうしたオフラインティーチングにおけるエラーチェックの中でも、再生動作時に、作業ロボットの３次元モデルが、ワークおよび周辺装置に干渉するかどうかを判断する干渉チェックは、特に重要である。
【００１０】
（従来技術２）
一般に３次元モデルの表面は、ポリゴン（三角形状の面）を最小単位として構成されている。
【００１１】
従来にあっては、図４（ａ）に示すように、再生動作時に、作業ロボット１の３次元モデル１Ｍの表面を構成するポリゴン９０が、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍの表面を構成するポリゴン９１に交差したか否かを判定することをもって、作業ロボット１０が、ワーク１０および周辺装置８０に干渉したか否かを判断するようにしている。
【００１２】
（従来技術３）
特許文献２、３には、干渉チェック対象となる両３次元モデルを、これに近似する単純な直方体形状等のモデルに置換した上で、両３次元モデルを構成する面同士の交差を判定することで、干渉チェックを行うという発明が記載されている。
【特許文献１】特開２００３−１２７０７７号公報
【特許文献２】特開平１−１７３２０５号公報
【特許文献３】特開平１１−２５４３７９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
（第１の課題）
オフラインティーチングによるエラーチェックを精度よく行い、実機で使用に耐えるロボットプログラムに修正するには、その前提として、作業ロボットなどの３次元モデルを、実機に忠実に作成して、画面上に表示させなければならない。このように３次元モデルを実機に近く精密に表示させようとすると、３次元モデルを構成するポリゴンの数は、必然的に増加する。このため従来技術２をそのまま適用すると、膨大な組み合わせのポリゴン９０とポリゴン９１の交差を逐一判定しなければならず、干渉チェック処理に多大な時間を要することになる。
【００１４】
確かに従来技術３を適用すれば、３次元モデルが単純化されることで、３次元モデルを構成するポリゴンの数が減り、干渉チェック処理のための計算量が減り、干渉チェック処理の時間を減らすことができる。しかし、作業ロボット等を単純な形状に近似してしまうと、エラーチェックの精度が低下してしまい、実機で使用に耐えるロボットプログラムに修正することはできない。また、単純な３次元モデルで得られた干渉チェックの結果は、信頼性に乏しくそのまま使うことができないため、元の実機に忠実な３次元モデルに戻した上で、再度、干渉チェックを行って詳細に検討する必要がある。このように干渉チェックを２重に行わざるを得なく、結果として、干渉チェックの処理には、時間を要することになってしまう。本発明はこうした実状に鑑みてなされたものであり、オフラインティーチングで、作業ロボットとワークおよび周辺装置の干渉チェックを行うに際して、干渉チェックの精度、信頼性を高く維持しつつも、干渉チェックの処理時間を減らすことを解決課題とするものである。
【００１５】
（第２の課題）
従来技術１で述べたように、オフラインティーチング装置では、作業ロボットの３次元モデルを、実際の作業ロボットと同じ速度でパソコンの画面上で再生動作させる必要がある。作業ロボットの再生動作中に、パソコンの画面上で作業ロボットの動きを滑らかに表示させるには、たとえば１秒間に数十回（たとえば３０フレーム）の画面の更新が必要とされる。そして、画面が更新される毎に、作業ロボットの動きが変化することから、画面が更新される間隔の時間（たとえば１/３０秒）毎に干渉チェック処理を行い、その結果をリアルタイムに画面上に表示する必要がある。
【００１６】
しかし、上述の第１の課題で述べたように、作業ロボットの３次元モデルを、実機に忠実に再生動作させて、干渉チェックを行うことにすると、干渉チェックの処理時間が必然的に増加してしまう。
【００１７】
このため非常に短い画面更新の間隔の時間毎に、計算量が多く、多大な時間を要する干渉チェックを行わなければならない。この結果、画面更新時間内に、干渉チェック処理が終了できずに、画面が「コマ落ち」して、作業ロボットが画面上で滑らかに動かなくなってしまうおそれがある。これによりオペレータが画面上における作業ロボットの細かな動きを確認できなかったり、エラーを見逃してしまうおそれがある。たとえば、作業ロボットのツール先端が溶接線に沿って忠実にトレースしているか否かを、オペレータが画面上で確認できなくなるおそれがある。
【００１８】
本発明は、こうした実状に鑑みてなされたものであり、作業ロボットの３次元モデルを画面上で実際の作業ロボットと同じ速度で再生動作させるに際して、画面更新間隔の時間内に干渉チェックを確実に終了させるようにして、コマ落ちすることなく画面上で作業ロボットを滑らかに再生動作させることを解決課題とするものである。
【課題を解決するための手段】
【００１９】
第１発明は、
作業ロボットの３次元モデルと、ワークおよび周辺装置の３次元モデルとを画面上に表示させ、ロボットプログラムに従い作業ロボットの３次元モデルを模擬的に再生動作させて、再生動作結果にロボットプログラムを修正するようにした作業ロボットのオフラインティーチング装置であって、
作業ロボットの３次元モデルの表面の位置若しくは表面から離れた外側の位置に、干渉チェック用の線分を、表面に沿って複数、設定し、
この干渉チェック用の複数の線分それぞれが、ワークおよび周辺装置の３次元モデルと交差することを判定することによって、作業ロボットがワークおよび周辺装置に干渉することを判断する干渉チェック処理が行われること
を特徴とする。
【００２０】
第２発明は、第１発明において、
作業ロボットの３次元モデルが、実際の作業ロボットと同じ速度で再生動作するように、表示画面を更新する画面更新処理が行われる請求項１記載の作業ロボットのオフラインティーチング装置であって、
画面が更新される時間内に、干渉チェック処理が終了するように、干渉チェック処理に用いられる干渉チェック用線分の本数を調整すること
を特徴とする。
【００２１】
第３発明は、第１発明において、
作業ロボットの３次元モデルの各部位のうち、ワークおよび周辺装置の３次元モデルと干渉する可能性の高い部位ほど、干渉チェック用線分の設定密度を高く設定すること
を特徴とする。
【００２２】
第１発明によれば、図３、図４（ｂ）に示すように、作業ロボット１の３次元モデル１Ｍ（ポリゴン９０）とは別に干渉チェック用線分２０が設定され、線分２０と、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍを構成するポリゴン９１とが交差していることを判定することで、両者の干渉を判定するようにしたので、従来（図４（ａ））のように、作業ロボット１の３次元モデル１Ｍを構成するポリゴン（面）９０と、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍを構成するポリゴン９１とが交差していることを判定する場合に比して、干渉チェック処理に要する時間を短縮することができる。このため３次元モデルを単純化せずとも短時間で干渉チェックを行うことができる。これにより本発明によれば、オフラインティーチングで、作業ロボット１とワーク１０および周辺装置８０の干渉チェックを行うに際して、干渉チェックの精度、信頼性を高く維持しつつも、干渉チェックに要する時間を減らすことができる。
【００２３】
第３発明では、作業ロボット１の３次元モデル１Ｍの各部位のうち、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍと干渉する可能性の高い部位（たとえば溶接トーチ２、アーム３）ほど、干渉チェック用線分２０の設定密度が高くなるように設定される（図３）。このため、干渉チェックの精度向上と時間短縮を両立させることができる。
【００２４】
また、第２発明によれば、図７に示すように、干渉チェックサブルーチン処理に使用する干渉チェック用線分２０の本数Ｃを調整することで、干渉チェックサブルーチン処理に要する時間を調整して、画面更新間隔の時間ｔを標準更新時間ｔstd付近に調整するようにしたので、画面更新間隔の時間内に、干渉チェックを確実に終了させることができる。このため３次元モデルを単純化せずとも確実に画面更新間隔の時間内に干渉チェックを終了させることができる。これにより本発明によれば、作業ロボット１の３次元モデル１Ｍを画面７ａ上で実際の作業ロボット１と同じ速度で再生動作させるに際して、画面更新間隔の時間内に干渉チェックを確実に終了させることができるようになり、コマ落ちすることなく画面７ａ上で作業ロボット１を滑らかに再生動作させることができる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照して本発明の実施形態について説明する。
【００２６】
なお、実施形態では、作業ロボットとして、溶接作業を行う溶接ロボットを想定し、その溶接ロボットの各軸を駆動制御するためのロボットプログラムを修正するための装置を想定している。しかし、本発明としては、ツール先端をワーク上の移動経路に沿って移動させて所定の作業を行うものであれば、任意の作業ロボットに適用可能であり、たとえばシーリングを行うシーリング作業用ロボットにも適用することができる。
【００２７】
図１は、実施形態の装置の全体構成を示している。
【００２８】
同図１に示すように作業ロボット１は、アーム３を有しており、このアーム３の先端には、ツールである溶接トーチ２が取り付けられている。
【００２９】
作業ロボット１は、たとえば６軸作業ロボットであり、各軸Ｘ、Ｙ、Ｚ、Ａ、Ｂ、Ｃが駆動されることにより作業ロボット座標系Ｘ−Ｙ−Ｚ上で、トーチ先端２ａの座標位置およびトーチ姿勢角（Ｘ、Ｙ、Ｚ、Ａ、Ｂ、Ｃ）が変化される。なおトーチ姿勢角（Ａ、Ｂ、Ｃ）はオイラ角で定義される。
【００３０】
作業ロボット１の外部には、周辺装置８０が設けられている。周辺装置８０は、スライダ４、ポジショナ９からなる。
【００３１】
作業ロボット１の各軸、スライダ４の各軸、ポジショナ９の各軸は、ロボットコントローラで５によって駆動制御され、これによりトーチ先端２ａが、溶接対象であるワーク１０上の所定の移動経路に沿って移動される。なおスライダ４、ポジショナ９以外の治具などを設けて、周辺装置８０を構成してもよい。
【００３２】
ロボットコントローラ５には、「プログラミングペンダント」と呼ばれる携行自在の操作盤５０が設けられている。この操作盤５０を操作することによりロボットコントローラ５を介して作業ロボット１を実際に動作させることができる。また、この操作盤５０を操作することにより、後述するようにパソコン７の表示画面７ａ上で作業ロボット１の３次元モデル１Ｍを動作させることができる。そして、作業ロボット１が動作したロボット各軸を記憶することにより、作業の各動作点ごとに、作業ロボット１の各軸位置、スライダ４の各軸位置、ポジショナ９の各軸位置を教示することができる。操作盤５０で教示された教示データに基づいてロボットプログラム３０（図５）が作成され、また修正される。そして、修正されたロボットプログラム３０にしたがい作業ロボット１の各軸、スライダ４の各軸、ポジショナ９の各軸が動作する。
【００３３】
ワーク１０は、ポジショナ９に装着されている。ポジショナ９は、各軸Ｕ、Ｖを有しており、各軸Ｕ、Ｖの駆動位置が変更されることにより、作業ロボット１に対するワーク１０の相対位置関係が変化する。なお、本実施例では、ワーク１０として、建設機械のバケットを想定している。
【００３４】
作業ロボット１は、走行台車であるスライダ４上に移動自在に載置されている。スライダ４は各軸Ｒ、Ｓを有しており、各軸Ｒ、Ｓの駆動位置が変更されることにより、作業ロボット１に対するワーク１０の相対位置関係が変化する。
【００３５】
これらポジショナ９、スライダ４の各軸は、作業ロボット１の軸に対して外部（ＥＸ）軸と呼ばれる。
【００３６】
したがって作業ロボット１の軸が駆動されることにより作業ロボット座標系におけるツール先端２ａの位置Ｐが変化されるとともに、外部軸が駆動されることにより、外部座標系におけるトーチ先端２ａの位置（外部軸位置）Ｅが変化される。作業ロボット軸と外部軸が駆動されたときのトーチ先端２ａの位置は、作業ロボット座標系上の位置Ｐと外部座標系上の位置Ｅとを合成した位置Ｐ＋Ｅとして表される。
【００３７】
パソコン７は、オフラインティーチング用端末を構成している。作業ロボット１の３次元モデル１Ｍのデータ、ワーク１０の３次元モデル１０Ｍのデータ、周辺装置８０の３次元モデル８０Ｍのデータは、図示しない３次元ＣＡＤ装置で作成され、パソコン７に送られ、パソコン７に取り込まれる。また、操作盤５０の操作によって教示された教示データは、パソコン７に取り込まれる。
【００３８】
パソコン７では、教示データに基づいてロボットプログラム３０が作成される。なお、教示データに基づき、ロボットプログラム３０を予め作成しておき、ロボットプログラム３０をパソコン７に取り込むようにしてもよい。
【００３９】
図２は、パソコン７とロボットコントローラ５と操作盤５０の構成をブロック図にて示している。
【００４０】
パソコン７は、パソコン本体７００と、ディスプレイ７５０からなる。ディスプレイ７５０の表示画面７ａに画像が表示される。パソコン本体７００は、ＣＰＵ７０１と、画像表示専用ボードとしてのビデオカード７０２と、ハードディスク７０６と、入出力部（Ｉ/Ｏ）７０５を含んで構成されている。パソコン本体７００には、入力装置としてのキーボード７０３、マウス７０４が接続されている。ビデオカード７０２は、画面表示データを記憶するメモリを搭載した拡張カードであり、本実施例では、後述する画面表示機能、干渉チェック用線分２０と、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍとの交差を検出する機能を有している。
【００４１】
パソコン本体７００の入出力部７０５と、ロボットコントローラ５の入出力部５０１は、通信線７９０によって接続されている。
【００４２】
操作盤５０の操作に応じて、作業ロボット１、スライダ４、ポジショナ９が動き、それらの位置は通信線７９０を介してパソコン本体７００に送られ、表示している３次元モデルが動作するソフトウェアがインストールされている。  
操作盤５０の操作に応じて、ロボットコントローラ５内で、ロボットプログラム３０を作成し、また修正する処理が実行され、ロボットコントローラ５内のメモリ５０２に記憶される。
【００４３】
また、パソコン本体７００には、図６、図７で後述するように、作業ロボット１とワーク１０、スライダ４、ポジショナ９との干渉チェックを行うソフトウエアがインストールされている。
【００４４】
図３は、作業ロボット１の３次元モデル１Ｍを斜視図にて示している。
【００４５】
同図３に示すように、作業ロボット１の３次元モデル１Ｍの表面から離れた外側の位置には、干渉チェック用の線分２０が、３次元モデル１Ｍの表面に沿って複数、設定されている。作業ロボット１の３次元モデル１Ｍの各部位のうち、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍと干渉する可能性の高い部位ほど、干渉チェック用線分２０の設定密度が高くなるように設定されている。本実施例では、アーム３、溶接トーチ２以外の箇所に比して、アーム３、溶接トーチ２の箇所の方が干渉チェック用線分２０の設定密度が高くなるように、干渉チェック用線分２０が設定されている。Ｎmax本の干渉チェック用線分２０のそれぞれには、＃１、＃２、…＃Ｎ…＃Ｎmaxと、各線分を識別する識別番号が付与されている。干渉チェック用線分２０を、作業ロボット１の３次元モデル１Ｍの表面から離れた外側の位置に設定しているのは、３次元モデル同士が接触する前の接近している段階で警告をするためである。
【００４６】
干渉チェック用線分２０の作成は、３次元ＣＡＤ装置で、作業ロボット１の３次元モデル１Ｍを作成する際に行ってもよく、パソコン７で行ってもよい。
【００４７】
図８、図９は、作業ロボット１が行う作業の一例を斜視図にて示している。図５は、ロボットプログラム３０の一例を示している。
【００４８】
ロボットプログラム３０は、各ステップ３３、３４…４３からなり、各ステップ毎に、移動命令などのコマンド、補間条件、溶接条件データ、速度データ、作業ロボット１各軸の位置、姿勢角データ、外部軸の位置などが対応づけられている。
【００４９】
ステップ３３からステップ４３には、作業ロボット１のトーチ先端２ａが溶接開始点まで直線補間で移動し、溶接開始点から溶接終了点まで直線補間で多層盛の溶接を行うという動作が記述されている。
【００５０】
ステップ３３〜４３のうち、移動命令のコマンドを示すステップ３７、３８、４０、４１、４３には、教示データ、つまりツール先端２ａの座標位置およびトーチ姿勢角（Ｘ、Ｙ、Ｚ、Ａ、Ｂ、Ｃ）、ポジショナ９、スライダ４の各軸位置（Ｕ、Ｖ、Ｒ、Ｓ）が対応づけられている。作業ロボット１のトーチ先端２ａは、移動命令に従って各教示点Ｐ1、Ｐ2、Ｐ3、Ｐ4、Ｐ5に移動する。
【００５１】
教示データが適切であれば、図８に示すように、作業ロボット１がワーク１０などに干渉することはないが、教示データが不適切である場合には、図９に斜線にて示すように、作業ロボット１がワーク１０などに干渉する。
【００５２】
操作盤５０を操作することで教示データが、通信線７９０を介してパソコン７に取り込まれ、ロボットプログラム３０が作成される。なお、キーボード７０３、マウス７０４を操作して、教示データをパソコン７に取り込みロボットプログラム３０を作成してもよい。
【００５３】
図６、図７は、ロボットコントローラ５でのプログラム実行処理とパソコン７で行われる干渉チェック処理を示している。
【００５４】
まず、ロボットコントローラ５において、ロボットプログラム３０を１ステップずつ読み取り（ステップ１０１）、そのステップの内容が「移動命令」のコマンドであるか否かが判断される（ステップ１０２）。この結果「移動命令」のコマンドであると判断された場合には（ステップ１０２の判断Ｙｅｓ）、教示点間（たとえばＰ1〜Ｐ2）の軌跡を補間して各目標位置Ｐを算出する。
【００５５】
すなわち、作業ロボット１のトーチ先端２ａの位置および姿勢角度（トーチ姿勢オイラ角）のデータ（Ｘ、Ｙ、Ｚ、Ａ、Ｂ、Ｃ）は、各移動点Ｐ1、Ｐ2、Ｐ3、Ｐ4、Ｐ5毎に教示されている。なおポジショナ９、スライダ４の各軸のデータ（Ｕ、Ｖ、Ｒ、Ｓ）についても各移動点毎に教示されている。
【００５６】
教示されたＰ1、Ｐ2、Ｐ3、Ｐ4点以外の中間の位置は、補間演算によって求められる。
【００５７】
具体的には、始点（たとえばＰ1）をＰs（Ｘs、Ｙs、Ｚs、Ａs、Ｂs、Ｃs）とし、終点（たとえばＰ2）をＰe（Ｘe、Ｙe、Ｚe、Ａe、Ｂe、Ｃe）とすると、軌跡補間データＬpは下記（１）式の演算式により補間演算される。
【００５８】
Ｌp＝ｆ（Ｐs、Ｐe、Ｖｒ）  …（１）
上記（１）式において、Ｖrは予め設定されたトーチ先端２ａの移動速度であり、ｆは予め定められた所定の関数である。
【００５９】
各時刻ｔにおける補間位置Ｐ（Ｘ、Ｙ、Ｚ、Ａ、Ｂ、Ｃ）は下記（２）式で与えられる。
【００６０】
Ｐ＝ｇ（Ｌp、ｔ）  …（２）
上記（２）式において、ｇは予め定められた所定の関数である。このように、（１）、（２）式に従って軌跡が補間されて各目標位置Ｐが算出される（ステップ１０３）。
【００６１】
つぎに、逆変換によって目標位置Ｐから作業ロボット１の各軸角度θiが算出される。
【００６２】
すなわち、作業ロボット１の各軸角度θi（ｉ＝１〜６）は、下記（３）式にて与えられる。
【００６３】
θi＝ｉｎｖＫ（Ｐ）  …（３）
上記（３）式で関数ｉｎｖＫは、各軸角度θiからトーチ先端位置Ｐを求める関数Ｋの逆関数である。トーチ先端位置Ｐを逆変換することによって作業ロボット１の各軸角度θiを求めることができる。よって、上記（３）式にしたがい逆変換によって目標位置Ｐから作業ロボット１の各軸角度θiが算出される（ステップ１０４）。
【００６４】
つぎに、上記ステップ１０４で演算された各軸角度θiのデータがパソコン７に送られて、パソコン７に表示されている作業ロボット１の３次元モデル１Ｍが作成されて、作業ロボット１の３次元モデル１Ｍが更新される。なお、スライダ４、ポジショナ９の外部軸Ｅについても、各軸角度Ｕ、Ｖ、Ｒ、Ｓの変化に応じた姿勢のスライダ４、ポジショナ９の３次元モデル４Ｍ、９Ｍが作成されて、同３次元モデル４Ｍ、９Ｍが更新される（ステップ１０５）。
【００６５】
上記ステップ１０５で、作業ロボット１の３次元モデル１Ｍの姿勢が変化する毎に、パソコン７側で干渉チェックサブルーチン処理が行われる。干渉チェックサブルーチン処理は、後述するように図７に示される（ステップ１０６）。
【００６６】
干渉チェックサブルーチン処理が終了すると、ステップ１０５で更新された作業ロボット１の３次元モデル１Ｍを、パソコン７の表示画面７ａに表示するように、画面７ａの内容が更新される。なお、スライダ４、ポジショナ９の外部軸Ｅについてもスライダ４、ポジショナ９の３次元モデル４Ｍ、９Ｍの姿勢が更新される毎に、画面７ａの内容が更新されることになる（ステップ１０７）。
【００６７】
ステップ１０８では、教示点間（たとえばＰ1〜Ｐ2）の軌跡の終わりまで各移動位置Ｐごとに、同様のステップ１０３〜ステップ１０７の処理が繰り返し実行される。
【００６８】
１つの「移動命令」のコマンドについて、上記の処理が終了すると、ロボットプログラム３０が終了するまで、各移動命令のコマンド毎にステップ１０１〜１０８の処理が繰り返される。
【００６９】
このように、各時刻における作業ロボット１の各軸角度θiが求められ、各時刻における各軸角度θiの姿勢の作業ロボット１の３次元モデル１Ｍをパソコン７の表示画面７ａ上で順次更新させていけば、作業ロボット１を画面７ａ上で擬似的に再生動作させることができる。
【００７０】
つぎに、図７に示す干渉チェックサブルーチン処理について説明する。
【００７１】
なお、この干渉チェックサブルーチン処理の前提として、干渉チェックサブルーチン処理が行われる毎に、干渉チェックサブルーチン処理を実施した時刻が記憶されておかれるものとする
図６のステップ１０５で、作業ロボット１の３次元モデル１Ｍが更新されると、手順は、図７のステップ２０１に移行されて、現在の時刻ｔpから、前回に干渉チェックサブルーチン処理を実施した時刻ｔcを減算して、前回から今回までに処理に費やした処理時間ｔが求められる。処理時間ｔは、表示画面７ａを更新する間隔の時間に対応する（ステップ２０１）。そして、現在時刻ｔpを、前回実施時刻ｔcに更新する（ステップ２０２）。
【００７２】
以下では、表示画面７ａが更新される時間内に、干渉チェックサブルーチン処理が終了するように、干渉チェックサブルーチン処理に用いられる干渉チェック用線分２０の本数Ｃを調整する処理が実行される（ステップ２０３〜２０５）。
【００７３】
すなわち、表示画面７ａを更新する間隔の時間は、作業ロボット１の３次元モデル１Ｍを、実際の作業ロボット１と同じ速度で動作させて画面上で滑らかに表示させるために短い時間（たとえば、１/３０秒）に設定されている。一方で、画面更新毎に、作業ロボット１の３次元モデル１Ｍの姿勢が変化することから、画面更新毎に干渉チェックサブルーチン処理を行い、リアルタイムに干渉チェック結果を画面７ａ上に表示させる必要がある。そこで、標準更新時間ｔstdが予め設定され、この標準更新時間ｔstdで干渉チェックサブルーチン処理が行われて画面更新が行われるように、干渉チェック用線分２０の本数Ｃが調整される。
【００７４】
まず、ステップ２０１で求められた処理時間ｔが、標準更新時間ｔstdよりも大きいか否かが判断される（ステップ２０３）。
【００７５】
ここで、複数本の干渉チェック用線分２０を干渉チェック（ステップ２０８）に使用する順序は、＃１→＃２→、…＃Ｎ→…＃Ｎmaxと、識別番号が順次大きくなる順序で行い、最大の識別番号Ｎmaxに達すると、最小の識別番号＃１に戻り、以下同様に、識別番号を順次大きくする順序で干渉チェック用線分２０を選択して干渉チェック（ステップ２０８）に使用するものとする。初期状態では、干渉チェックサブルーチン処理に使用する干渉チェック用線分２０の本数Ｃは、予め所定の本数Ｃ0に設定されておかれるものとする。
【００７６】
ステップ２０３の判断の結果、処理時間ｔが、標準更新時間ｔstdよりも大きいと判断された場合には（ステップ２０３の判断ＹＥＳ）、干渉チェックサブルーチン処理に使用する干渉チェック用線分２０の本数を減らさなければ画面更新間隔の時間内に干渉チェックサブルーチン処理が終了しないおそれがあるものと判断し、干渉チェック用線分２０の本数Ｃが、現在の本数Ｃから１本を引いた数Ｃ−１本に調整される。ただし、この演算の結果、本数Ｃが、１よりも小さくなった場合には、本数Ｃは１に設定される（ステップ２０４）。
【００７７】
一方、ステップ２０３の判断の結果、処理時間ｔが、標準更新時間ｔstd以下であると判断された場合には（ステップ２０３の判断ＮＯ）、干渉チェックサブルーチン処理に使用する干渉チェック用線分２０の本数を増やしても画面更新間隔の時間内に干渉チェックサブルーチン処理が終了する余裕があるものと判断し、干渉チェック用線分２０の本数Ｃが、現在の本数Ｃに１本を加えた数Ｃ＋１本に調整される。ただし、この演算の結果、本数Ｃが、全本数Ｎmaxよりも大きくなった場合には、本数Ｃは、干渉チェック用線分２０の全本数Ｎmaxに設定される（ステップ２０５）。
【００７８】
以上のように、干渉チェックサブルーチン処理に使用する干渉チェック用線分２０の本数Ｃを調整することで、干渉チェックサブルーチン処理に要する時間が調整されて、画面更新間隔の時間ｔが標準更新時間ｔstd付近に調整される。
【００７９】
以下のステップ２０６からステップ２１０では、干渉チェック用線分２０が、ワーク１０、周辺装置８０（ポジショナ９、スライダ４）の３次元モデル１０Ｍ、８０Ｍ（９Ｍ、４Ｍ）を構成するポリゴン９１に交差したか否かを判定することをもって、作業ロボット１０が、ワーク１０および周辺装置８０（ポジショナ９、スライダ４）に干渉したか否かが判断される。
【００８０】
すなわち、初回の干渉チェックサブルーチン処理では、識別番号＃１の干渉チェック用線分２０から始まり、識別番号＃Ｎを順次＋１インクリメントして（ステップ２０７）、干渉チェック（ステップ２０８）を、予め設定された本数Ｃ0まで行う（ステップ２０６、２１０）。次回の干渉チェックサブルーチン処理では、前回の干渉チェックサブルーチン処理で最後に使用した識別番号（Ｃ0番目の番号）の干渉チェック用線分２０のつぎの識別番号の干渉チェック用線分２０から始まり（ステップ２０７）、干渉チェック（ステップ２０８）が行われる毎に、識別番号Ｎを順次＋１インクリメントして（ステップ２０７）、ステップ２０４あるいはステップ２０５で演算された本数Ｃまで繰り返し行う。なお、識別番号＃Ｎが最大数Ｎmaxに達すると、最初の識別番号Ｎ1に戻る（ステップ２０７）。以下、同様にして、毎回の干渉チェックサブルーチン処理を、その回の干渉チェックサブルーチン処理実行時に演算された本数Ｃ（ステップ２０４、２０５）だけ繰り返し行う（ステップ２０６、２１０）。
【００８１】
図７の干渉チェックサブルーチン処理が終了すると、図６のステップ１０７にリターンされる。
【００８２】
上記ステップ２０８における干渉チェックは、以下のようにして行う。
【００８３】
すなわち、図４（ｂ）に示すように、干渉チェック用線分２０は、作業ロボット１の３次元モデル１Ｍの表面に対して所定の位置関係で設定されている。ここで、現在の作業ロボット１の３次元モデル１Ｍの表面の座標位置は、ステップ１０５で得られている。よって、ある識別番号Ｎの干渉チェック用線分２０の現在の座標位置は、ステップ１０５で得られた現在の作業ロボット１の３次元モデル１Ｍの表面の座標位置に基づいて、求めることができる。一方、ワーク１０、スライダ４、ポジショナ９の３次元モデル１０Ｍ、４Ｍ、９Ｍの表面を構成するポリゴン（平面）９１の座標位置についても、ステップ１０５で得られている。
【００８４】
そこで、ある識別番号Ｎの干渉チェック用線分２０の座標位置と、ワーク１０、スライダ４、ポジショナ９の３次元モデル１０Ｍ、４Ｍ、９Ｍを構成する各ポリゴン９１、９１…の座標位置とが比較され、両座標位置が一致しているか否か、つまり、ある識別番号Ｎの干渉用チェック用線分２０が、各ポリゴン（平面）９１、９１…に交差しているかが判定される（ステップ２０８）。その結果両者の座標位置が一致しており、ある識別番号Ｎの干渉用チェック用線分２０が、ポリゴン（平面）９１、９１…に交差している場合には、「干渉あり」と判定され（ステップ２０８の判断ＹＥＳ）、オペレータに警告を与えるべく、図９に斜線にて示すように、表示画面７ａ上において、作業ロボット１の３次元モデル１Ｍのうち、干渉している部位が、他の部位と識別できる警告用の特別の色（たとえば赤色）で表示される。これをもって、ロボットプログラム３０の教示データが不適切であったことをオペレータは、認識することができる（ステップ２０９）。ステップ２０8の判断の結果、両者の座標位置が一致しておらず、ある識別番号Ｎの干渉用チェック用線分２０が、ポリゴン（平面）９１、９１…に交差していない場合には、「干渉していない」と判定され（ステップ２０８の判断ＮＯ）、オペレータに上述の警告を与えることなく、つぎの処理に移行される（ステップ２１０）。すなわち、図８に示すように、表示画面７ａ上において、作業ロボット１の３次元モデル１が、警告用の色（図９では斜線にて示している）に変化しなければ、ロボットプログラム３０の教示データは適切であることをオペレータは、認識することができる。
【００８５】
本実施例では、干渉チェック用線分２０は、作業ロボット１の３次元モデル１Ｍの表面から離れた外部位置に設定されているため、作業ロボット１が、ワーク１０または周辺装置８０（ポジショナ９、スライダ４）に接触する段階ではなく、接近している段階で警告を表示することができる。
【００８６】
このように３次元モデル同士が接触する段階ではなく、３次元モデル同士が接近している段階で「干渉あり」として警告を表示させているのは、実際の作業ロボット１には誤差があるため、３次元モデル同士では接近している段階といえども、実際の機器では接触している可能性が高いからである。
【００８７】
たとえば図９に示すように、トーチ先端２ａが溶接線に沿って移動中に、作業ロボット１がワーク１０に干渉（接近）していることを警告する表示（斜線にて示す）が画面７ａ上でなされた場合には、ロボットプログラム３０のうち、多層盛溶接を行う前のステップ４１における移動点Ｐ4の教示データ（ツール先端２ａの座標位置およびトーチ姿勢角（Ｘ、Ｙ、Ｚ、Ａ、Ｂ、Ｃ）、ポジショナ９、スライダ４の各軸位置（Ｕ、Ｓ、Ｒ、Ｓ））が不適切であると判断して、このステップ４１における教示データが修正される。
【００８８】
教示データの修正は、操作盤５０を操作して、作業ロボット１および周辺装置８０の姿勢を、ステップ４１の姿勢に戻した上で行われる。なお、操作盤５０を操作する代わりに、キーボード７０３やマウス８０４を操作することで、教示データを修正してもよい。
【００８９】
こうして、操作盤５０の操作に応じて、ロボットコントローラ５で、ロボットプログラム３０を修正する処理が実行されると、修正されたロボットプログラム３０は、ロボットコントローラ５内のメモリ５０２に記憶される。ロボットコントローラ５は、修正されたロボットプログラム３０をメモリ５０２から読み出して、ロボットプログラム３０に従った駆動制御指令を、実機の作業ロボット１および周辺装置８０（ポジショナ９、スライダ４）に与える。これにより実機の作業ロボット１は、ワーク１０や周辺装置８０（ポジショナ９、スライダ４）と干渉することなく、溶接作業を行うことができる。
【００９０】
以上の図６、図７における各ステップのうち、３次元モデルの画面表示、３次元モデル同士の交差の検出処理に係るステップ１０５、１０６、１０７、ステップ２０８に関しては、ビデオカード７０２で、行われる。よって、既存のビデオカードを利用して、安価にシステムを構築することができる。
【００９１】
なお、本実施例では、図３に示すように、作業ロボット１の３次元モデル１Ｍの表面から離れた外側の位置に、干渉チェック用の線分２０を、設定しているが、干渉チェック用線分２０を、作業ロボット１の３次元モデル１Ｍの表面と同一面上に設定してもよい。
【００９２】
以上のように、本実施例によれば、図４（ｂ）に示すように、作業ロボット１の３次元モデル１Ｍ（ポリゴン９０）とは別に干渉チェック用線分２０を設定し、線分２０と、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍを構成するポリゴン９１とが交差していることを判定することで、両者の干渉を判定するようにしたので、従来のように、作業ロボット１の３次元モデル１Ｍを構成するポリゴン（面）９０と、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍを構成するポリゴン９１とが交差していることを判定する場合（図４（ａ））に比して、干渉チェック処理に要する時間を短縮することができる。このため３次元モデルを単純化せずとも短時間で干渉チェックを行うことができる。これにより本実施例によれば、オフラインティーチングで、作業ロボット１とワーク１０および周辺装置８０の干渉チェックを行うに際して、干渉チェックの精度、信頼性を高く維持しつつも、干渉チェックに要する時間を減らすことができる。
【００９３】
特に本実施例によれば、図３に示すように、作業ロボット１の３次元モデル１Ｍの各部位のうち、ワーク１０および周辺装置８０の３次元モデル１０Ｍ、８０Ｍと干渉する可能性の高い部位ほど、干渉チェック用線分２０の設定密度が高くなるように設定したので、干渉チェックの精度向上と時間短縮を両立させることができる。
【００９４】
また、本実施例によれば、図７に示すように、干渉チェックサブルーチン処理に使用する干渉チェック用線分２０の本数Ｃを調整することで、干渉チェックサブルーチン処理に要する時間を調整して、画面更新間隔の時間ｔを標準更新時間ｔstd付近に調整するようにしたので、画面更新間隔の時間内に、干渉チェックを確実に終了させることができる。このため３次元モデルを単純化せずとも確実に画面更新間隔の時間内に干渉チェックを終了させることができる。これにより本実施例によれば、作業ロボット１の３次元モデル１Ｍを画面７ａ上で実際の作業ロボット１と同じ速度で再生動作させるに際して、画面更新間隔の時間内に干渉チェックを確実に終了させることができるようになり、コマ落ちさせることなく画面７ａ上で作業ロボット１を滑らかに再生動作させることができる。
【図面の簡単な説明】
【００９５】
【図１】図１は、実施形態の装置の全体構成を示す図である。
【図２】図２は、実施例の装置のブロック図である。
【図３】図３は、作業ロボットの３次元モデルと干渉チェック用線分の位置関係を示す斜視図である。
【図４】図４（ａ）、（ｂ）はそれぞれ、従来技術の干渉チェック処理を説明する図、実施形態の干渉チェック処理を説明する図である。
【図５】図５は、実施形態のロボットプログラムを例示する図である。
【図６】図６は、実施形態の処理の手順を示すフローチャートである。
【図７】図７は、実施形態の処理の手順を示すフローチャートである。
【図８】図８は、表示画面に擬似的に表示される作業ロボットの３次元モデルの斜視図で、干渉がない場合の姿勢を示した図である。
【図９】図９は、表示画面に擬似的に表示される作業ロボットの３次元モデルの斜視図で、干渉がある場合の姿勢を示した図である。
【符号の説明】
【００９６】
１  作業ロボット、４  スライダ、５  ロボットコントローラ、７  パソコン、９  ポジショナ、１０  ワーク、２０  干渉チェック用線分、８０  周辺装置
【図１】
0004574580.tif 000002
【図２】
0004574580.tif 000003
【図３】
0004574580.tif 000004
【図４】
0004574580.tif 000005
【図５】
0004574580.tif 000006
【図６】
0004574580.tif 000007
【図７】
0004574580.tif 000008
【図８】
0004574580.tif 000009
【図９】
0004574580.tif 000010