(57)【要約】【課題】自動化設備で、複数のロボットが同時に動作する際、或いは加工機械及び／または治具が同時に動作する際に、ロボット間の相互干渉、或いは加工機械及び／または治具との間の相互干渉を回避することができるシミュレーション装置を提供すること【解決手段】ミュレーション装置１は、１台ごとのロボットモデルの一定時間動作した軌跡の形状を表す複数の多面体の座標値とシミュレーション時刻を記録する軌跡情報記録部１１と、前記複数のロボットの軌跡の形状を表す複数の多面体の、三次元座標値と時刻とを、それぞれスプレッドシートに入力し、複数シート間の同じ時刻で空間的に干渉する多面体を計算により検出する干渉検出部１２とを備えて構成する。【選択図】        図１
2004280635.tif 000002
【特許請求の範囲】
【請求項１】
複数のロボットの動作をシミュレートするシミュレーション装置において、
１台ごとのロボットモデルの一定時間動作した軌跡の形状を表す複数の多面体の座標値とシミュレーション時刻を記録する軌跡情報記録手段と、
前記複数のロボットの軌跡の形状を表す複数の多面体の、三次元座標値と時刻とを、それぞれスプレッドシートに入力し、複数シート間の同じ時刻で空間的に干渉する多面体を計算により検出する干渉検出手段とを備えたことを特徴とするシミュレーション装置。
【請求項２】
加工機械及び／または治具の動作をシミュレートするシミュレーション装置において、
加工機械及び／または治具のモデルの動作単位ごとの動作の軌跡の形状を表す複数の多面体の座標値とシミュレーション時刻を記録する軌跡情報記録手段と、
前記加工機械及び／または治具の軌跡の形状を表す複数の多面体の、三次元座標値と時刻とを、それぞれスプレッドシートに入力し、複数シート間の同じ時刻で空間的に干渉する多面体を計算により検出する干渉検出手段とを備えたことを特徴とするシミュレーション装置。
【請求項３】
インターロック制御により停止する時間分、スプレッドシート上の座標値データを移動する座標値データ移動手段を備えたことを特徴とする請求項１または２に記載のシミュレーション装置。
【請求項４】
前記スプレッドシート上でインターロック制御による停止時間を含むサイクルタイムを計算するサイクルタイム計算手段を備えたことを特徴とする請求項１から３の何れか１項に記載のシミュレーション装置。
【請求項５】
複数のロボットについて、シミュレータでシミュレーションモデルを作成するステップと、
前記各ロボットについてシミュレータでオフラインティーチングを行うステップと、
シミュレーションを実行し、前記各ロボットの単位時間単位の動作領域データをファイルに記録するステップと、
スプレッドシートに動作領域データファイルを読み込むステップと、
前記スプレッドシートでロボットが相互干渉している部分をチェックするステップと、
前記スプレッドシートに干渉した部分の座標値を表示するステップとを含むことを特徴とするシミュレーション方法。
【請求項６】
加工機械及び／または治具について、シミュレータでシミュレーションモデルを作成するステップと、
前記加工機械及び／または治具についてシミュレータでオフラインティーチングを行うステップと、
シミュレーションを実行し、前記加工機械及び／または治具の動作単位ごとの動作領域データをファイルに記録するステップと、
スプレッドシートに動作領域データファイルを読み込むステップと、
前記スプレッドシートで前記加工機械及び／または治具が相互干渉している部分をチェックするステップと、
前記スプレッドシートに干渉した部分の座標値を表示するステップとを含むことを特徴とするシミュレーション方法。
【請求項７】
スプレッドシートでインターロック制御による停止時間を挿入するステップと、
相互干渉している部分をチェックするステップとを含むことを特徴とする請求項５または６に記載のシミュレーション方法。
【請求項８】
全シートについて相互干渉がなくなった場合に、インターロック時間を含むサイクルタイムを求めるステップと、
スプレッドシートで求めた干渉結果データをファイルに保存するステップと、
シミュレータに干渉結果データを読み込み、インターロック制御をシミュレーション表示するステップとを含むことを特徴とする請求項５から７の何れか１項に記載のシミュレーション方法。
【請求項９】
複数のロボットについて、シミュレーションを実行して得られた前記複数のロボットの単位時間単位の動作領域データをファイルに記録する処理と、
前記動作領域データファイルをスプレッドシートに読み込む処理と、
前記スプレッドシートでロボットが相互干渉している部分をチェックする処理と、
前記スプレッドシートに干渉した部分の座標値を表示する処理を実行するプログラム部分を持つことを特徴とするプログラム製品。
【請求項１０】
加工機械及び／または治具について、シミュレーションを実行して得られた前記加工機械及び／または治具の動作単位ごとの動作領域データをファイルに記録する処理と、
前記動作領域データファイルをスプレッドシートに読み込む処理と、
前記スプレッドシートで前記加工機械及び／または治具が相互干渉している部分をチェックする処理と、
前記スプレッドシートに干渉した部分の座標値を表示する処理を実行するプログラム部分を持つことを特徴とするプログラム製品。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自動化設備で、複数のロボットが同時に動作する際、或いは加工機械及び／または治具が同時に動作する際に、ロボット間の相互干渉、或いは加工機械及び／または治具との間の相互干渉を回避するためのインターロック制御設計を支援するシミュレーション装置，シミュレーション方法及びシミュレーションプログラムに関する。
【０００２】
【従来の技術】
シミュレーション装置（シミュレータ）は、コンピュータグラフィックスで作成した３次元仮想空間に、ロボットや加工機械及び／または治具の形状と関節の動作などを定義し、ロボット動作や加工機械及び／または治具をシミュレーションしている。例えば、ロボット操作には、複数のロボット動作をシミュレーションモデルとして作成し、３次元シミュレータ上で動作させるオフラインティーチング手法が用いられている。このオフラインティーチングでは、ロボットハンドや溶接ガンを目標位置へのパスを３次元空間の画面上で指定した上で、逆キネマティクスを解くことでロボット動作をシミュレーションするものである。そして、オフラインティーチングは、実機がないうちにシステム設計を正確に行い、トータルリードタイムを短縮するために広く用いられている。ティーチングデータは、ロボットコントローラで実行できるプログラムコードに変換して、実際のロボットにダウンロードする。
【０００３】
また、３次元シミュレータでは、仮想空間に複数台のロボットを置き、各ロボットの動きを運動力学的にシミュレーションする。複数台のロボットの相互干渉をするか否かはロボットの３次元形状モデル同士が重なりあうことで検出できる。この相互干渉検出方法については、ＩＧＲＩＰ（Ｉｎｔｅｒａｃｔｉｖｅ  Ｇｒａｐｈｉｃｓ  Ｒｏｂｏｔ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｐｒｏｇｒａｍ）など市販のシミュレータの機能として確立されている。
【０００４】
【発明が解決しようとする課題】
シミュレータでは、通常、相互干渉がないようにパスを設定し直し、再度シミュレーションを繰り返すことでティーチングを行うが、自動車溶接ラインなどでは、ロボット同士が極めて接近しているため、干渉が避けられない場合がある。新製品の投入では、既設のラインにティーチングデータや、新たなプログラムをシミュレータに追加する必要がある。
【０００５】
実機においては、干渉領域に入るとロボットコントローラに接続したライン制御用ＰＬＣ（プログラマブルコントローラ）を使ってインターロック制御が行われる。インターロック制御により、干渉域に入ろうとする２つのロボットのうち、一方のロボットを一時停止させることで相互干渉を避けることができるが、ＰＬＣのサイクルタイムは、一時停止した時間だけ長くなることになる。
【０００６】
さらに、インターロック制御を含むライン全体の制御をシミュレータ上で検証するためにはモデルが複雑化して精度を上げることが難しい。例えば、設計上重要な、ロボット数十台におよぶ設備全体のサイクルタイム計算を精度よく一度にシミュレーションすることは、実機で作るのと同じ期間がシミュレーションのモデル作りにかかるため、設計の期間短縮にならない。
【０００７】
このため、ラインのシステム設計では、サイクルタイムをあらかじめシミュレーションで検証することが重要となる。ここでのサイクルタイムの検証精度によって、最終的な現場調整期間が左右されることになる。例えば、仮に、シミュレーション精度が悪いため予定以上のサイクルタイムがかかると、ロボットティーチングは現場でやり直しになる。
【０００８】
【発明が解決しようとする課題】
ところが、シミュレーションでインターロック制御を行うには、シミュレーション言語でのプログラミングが必要であるが、シミュレーション言語でのプログラミング作成時間は、実機ＰＬＣでのインターロック制御のプログラム作成より手間（或いは時間）がかかる。
【０００９】
また、シミュレーション精度を高めるためには、干渉しあうロボットや加工機械及び／または治具のすべてを動作させるライン全体のシミュレーションモデルを開発する必要があるが、自動車溶接ライン等のラインではロボットや加工機械及び／または治具が数十台以上になるため、コンピュータ処理速度やシミュレーションプログラムの開発コストが大きすぎて実用にならない。そこで、実際には、大規模設備ではステーション単位での数台以下でロボットの相互干渉チェックをするしかなく、インターロック制御を含むサイクルタイム検証までは簡単にできなかった。
【００１０】
そこで、ライン全体のサイクルタイム検証に関して、精度がよく効率的な手段が従来存在しておらず、これを実現できるシミュレーション装置が要望されている。
【００１１】
そこで本発明は、上記した背景に鑑みてなされたもので、その目的とするところは、設備全体のロボット相互干渉や加工機械及び／または治具との間の相互干渉を回避するインターロック制御を含むサイクルタイム計算を簡単にかつ正確に行うことで、設備設計の精度を向上させ、かつトータルリードタイムを短縮できるシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを提供することにある。
【００１２】
【課題を解決するための手段】
本発明のシミュレーション装置は、複数のロボットの動作をシミュレートするもので、１台ごとのロボットモデルの一定時間動作した軌跡の形状を表す複数の多面体の座標値とシミュレーション時刻を記録する軌跡情報記録手段と、前記複数のロボットの軌跡の形状を表す複数の多面体の、三次元座標値と時刻とを、それぞれスプレッドシート（表計算アプリケーション）に入力し、複数シート間の同じ時刻で空間的に干渉する多面体を計算により検出する干渉検出手段とを備えるようにした。
【００１３】
また、別の解決手段としては、加工機械及び／または治具の動作をシミュレートするもので、加工機械及び／または治具のモデルの動作単位ごとの動作した軌跡の形状を表す複数の多面体の座標値とシミュレーション時刻を記録する軌跡情報記録手段と、前記加工機械及び／または治具の軌跡の形状を表す複数の多面体の、三次元座標値と時刻とを、それぞれスプレッドシート（表計算アプリケーション）に入力し、複数シート間の同じ時刻で空間的に干渉する多面体を計算により検出する干渉検出手段とを備えるようにすることもできる。なお、本明細書において、「Ａ及び／またはＢ」とは、ＡとＢの少なくとも一方の意味である。
【００１４】
本発明によれば、単位時間或いは動作単位あたりの移動軌跡を含む多面体を求め、その多面体の座標値をスプレッドシートに入力する。このとき、例えば、縦軸を前の時刻からその時刻までの領域データを表示し、横軸にロボット等の各パーツの領域データ（多面体が直方体の場合には、対角線上の２つの頂点等により特定できる）を表示する。このようにすると、同一の時間帯に存在する各パーツの存在可能領域がわかる。そこで、各ロボットごと，加工機械，治具ごとにスプレッドシートを作成する。そして、複数シート間の同じ時刻で空間的に干渉する多面体を検出することにより、実機における干渉の有無を容易に検出できる。よって、数十台のロボット設備、或いは加工機械及び／または治具を備えた設備全体の干渉を、簡単かつ高精度で検出できる。
【００１５】
本発明のシミュレーション装置では、インターロック制御により停止する時間分、スプレッドシート上の座標値データを移動する座標値データ移動手段を備えることができる。この座標値データ移動手段により、任意のスプレッドシート上の同一時間帯に存在する座標値データを、一括して移動させる。これにより、複数のスプレッドシート間における同一時刻に存在する座標値データを変更させることができる。よって、変更後の複数のスプレッドシート間で、干渉を生じさせないように座標値データ移動手段を動作させることにより、干渉しないロボット等の動作タイミングを決定することができる。このように、スプレッドシート状で、ある行以降の領域データを一括して平行移動させるといった簡単な操作で、複数のロボット間の干渉、或いは加工機械及び／または治具の間の干渉を回避することができる。
【００１６】
本発明のシミュレーション装置では、前記スプレッドシート上でインターロック制御による停止時間を含むサイクルタイムを計算するサイクルタイム計算手段を備えることができる。すなわち、上記したある行以降の領域データを一括して平行移動させた場合、その移動した区間は停止していることになり、インターロック制御を行ったことになる。よって、スプレッドシート上における領域データが格納された先頭行から最後行までの時間を求めることにより、インターロック生魚を含むサイクルタイム計算を、精度良く簡単にシミュレーションでき、シミュレーションによる検証期間を短縮でき、トータルリードタイムをも短縮できる。
【００１７】
本発明のシミュレーション方法は、複数のロボットについて、シミュレータでシミュレーションモデルを作成するステップと、前記各ロボットについてシミュレータでオフラインティーチングを行うステップと、シミュレーションを実行し、前記各ロボットの動作領域データをファイルに記録するステップと、スプレッドシートに動作領域データファイルを読み込むステップと、前記スプレッドシートでロボットが相互干渉している部分をチェックするステップと、前記スプレッドシートに干渉した部分の座標値を表示するステップとを含むことを特徴とする。
【００１８】
また、本発明のシミュレーション方法は、加工機械及び／または治具について、シミュレータでシミュレーションモデルを作成するステップと、前記加工機械及び／または治具についてシミュレータでオフラインティーチングを行うステップと、シミュレーションを実行し、前記加工機械及び／または治具の動作領域データをファイルに記録するステップと、スプレッドシートに動作領域データファイルを読み込むステップと、前記スプレッドシートで前記加工機械及び／または治具が相互干渉している部分をチェックするステップと、前記スプレッドシートに干渉した部分の座標値を表示するステップを含むようにした。
【００１９】
さらに、スプレッドシートでインターロック制御による停止時間を挿入するステップと、相互干渉している部分をチェックするステップとを含むことができる。
【００２０】
本発明のシミュレーション方法は、さらに、全シートについて相互干渉がなくなったときは、インターロック時間を含むサイクルタイムを求めるステップと、スプレッドシートで求めた干渉結果データをファイルに保存するステップと、シミュレータに干渉結果データを読み込み、インターロック制御をシミュレーション表示するステップを含むことができる。
【００２１】
さらに本発明に係るプログラム製品は、複数のロボットについて、シミュレーションを実行して得られた前記複数のロボットの単位時間単位の動作領域データをファイルに記録する処理と、前記動作領域データファイルをスプレッドシートに読み込む処理と、前記スプレッドシートでロボットが相互干渉している部分をチェックする処理と、前記スプレッドシートに干渉した部分の座標値を表示する処理を実行するプログラム部分を持つようにした。
【００２２】
また、別の解決手段としては、加工機械及び／または治具について、シミュレーションを実行して得られた前記加工機械及び／または治具の動作単位ごとの動作領域データをファイルに記録する処理と、前記動作領域データファイルをスプレッドシートに読み込む処理と、前記スプレッドシートで前記加工機械及び／または治具が相互干渉している部分をチェックする処理と、前記スプレッドシートに干渉した部分の座標値を表示する処理を実行するプログラム部分を持つようにしてもよい。
【００２３】
【発明の実施の形態】
以下本発明の実施の形態を説明する。図１に示すように、シミュレーション装置１は、軌跡情報記録部１１と、干渉検出部１２と、座標値データ移動部１３と、サイクルタイム計算部１４とを備えている。なお、図１の装置はロボットからなるモデルについても適用されるし、加工機械及び／または治具からなるモデルについても適用される。
【００２４】
軌跡情報記録部１１は、複数のロボットの１台ごとモデルの一定時間動作した軌跡の形状を表す複数の多面体の座標値とシミュレーション時刻を記録するものである。干渉検出部１２は、複数のロボットや加工機械及び／または治具の軌跡の形状を表す複数の多面体の三次元座標値と時刻を、それぞれスプレッドシート（表計算アプリケーション）に入力し、複数シート間の同じ時刻で空間的に干渉する多面体を計算により検出するものである。座標値データ移動部１３は、各ロボットや加工機械及び／または治具がインターロック制御により停止する時間分、スプレッドシート上の座標値データを移動させるものである。サイクルタイム計算部１４は、スプレッドシート上でインターロック制御による停止時間を含むサイクルタイムを計算するものである。
【００２５】
図１において、シミュレーション装置１は、軌跡情報記録部１１に、１台ずつのロボットや加工機械及び／または治具の形状，座標値，ティーチングプログラム並びにパラメータを読み込み、ティーチングした動作のシミュレーションを実行する。このとき、ロボット形状の動作領域の座標値を動作領域データとしてファイルに書き込む。これをラインのロボット台数分、或いは加工機械及び／または治具の数分繰り返す。
【００２６】
次に、干渉検出部１２は、動作領域データをスプレッドシートに読み込み、スプレッドシート上で座標位置の干渉チェックを計算する。座標値データ移動部１３は、スプレッドシート上で、インターロック制御による遅れ時間を追加し、全部のロボット間で相互干渉、或いは加工機械及び／または治具との間の干渉がなくなるように操作し、干渉がなくなれば、操作を終える。そして、サイクルタイム計算部１４は、ライン全体のインターロック時間を入れたサイクルタイムを求める。
【００２７】
図２は、図１のシミュレーション装置１を具体的に示すブロック図である。図２ではシミュレーション装置１は、シミュレータ２１と、干渉チェックプログラム２２と、スプレッドシート２３と、干渉チェック・インターロック時間追加プログラム２４と、各種記憶部とからなる。
【００２８】
図３は、実機ロボットのインターロック制御の構成を示す図であり、ここでは制御用ＰＬＣ３１が２つの実機ロボットＲＢＴ１，ＲＢＴ２を制御する図を示している。すなわち、例えば、実機ロボットＲＢＴ１が、定義された相互干渉領域ＩＲの座標値内に入ると、制御用ＰＬＣ３１が実機ロボットＲＢＴ２を停止させる。ロボットＲＢＴ１が相互干渉領域ＩＲから出ると、実機ロボットＲＢＴ２の動作を再開する。逆に、実機ロボットＲＢＴ２が相互干渉領域に入るとロボットＲＢＴ１を停止する。そして、制御用ＰＬＣ３１は、Ｉ／Ｏを通じて干渉域入力信号とロボット停止信号によって上記したインターロック制御を行う。
【００２９】
制御用ＰＬＣ３１は、このため、時間を設計時に考慮することはせず、実機ロボットで動作させてみないと相互干渉を避けるための待ち時間がどのくらいになるのか不明である。
【００３０】
図４は、制御用ＰＬＣ３１によるインターロック制御を行わない場合にロボット同士が衝突する様子を示している。すなわち、ロボットＲＢＴ１と、ロボットＲＢＴ２との干渉の様子を示しており、干渉域内において衝突が生じた様子を示してある。
【００３１】
図５は、制御用ＰＬＣ３１によるインターロック制御を行い、インターロック待ちにより、サイクルタイムが長くなった様子を示している。すなわち、図５から明らかなように、インターロック制御をした場合のロボットＲＢＴ１と、ロボットＲＢＴ２との干渉の様子を示しており、干渉域外ではもちろん干渉域内においても衝突は生じないが、サイクルタイムは、インターロック待ちをしている時間分だけ、図４に示したインターロック制御を行わない場合に比べて増加している。
【００３２】
ところで、シミュレータ上で、ライン全体について干渉を避ける動きをシミュレーションすることは、実機を作るのと同等の費用と手間がかかる上、シミュレーション用に特別のプログラムを作るコストが増えるため、設計検証用としては実用的ではない。そこで、本実施の形態では、以下に示すアルゴリズムを実行することにより、インターロック制御を行うに際し、どちらのロボットをどのタイミングで一時停止するかなどを決定し、正常に動作する場合のシステム全体のサイクルタイムを求めるようにした。具体的には、図６，図７に一連の示すフローチャートを実行する。
【００３３】
まず、各ロボットについて通常のシミュレーションを実行し、ロボットの動作に伴う移動軌跡（動作領域）を特定する。すなわち、シミュレータでシミュレーションモデルを作り（ＳＴ１０１）、シミュレータでオフラインティーチングを行い（ＳＴ１０２）、シミュレーションを実行し、ロボットの動作領域データをファイルに記録する（ＳＴ１０３）。そして、ステップ１０１〜１０３の処理を、必要なロボット分について繰り返す（ＳＴ１０４）。
【００３４】
次いで、スプレッドシートにステップ１０３で取得した動作領域データファイルを読み込み（ＳＴ１０５）、スプレッドシートのマクロでロボットが相互干渉している部分をチェックし（ＳＴ１０６）、スプレッドシートに干渉した部分の座標値を表示する（ＳＴ１０７）。
【００３５】
干渉したロボットのパスを修正できるか否かを判断し（ＳＴ１０８）、できない場合には処理をステップ１０２に戻し、上記したステップ１０２〜１０７の処理を実行する。また、修正可能な場合には、スプレッドシートでインターロック制御による停止時間を挿入し（ＳＴ１０９）、ロボットが相互干渉している部分をチェックする（ＳＴ１１０）。
【００３６】
そして、全シートについて相互干渉がなくなったか否かを判断し（ＳＴ１１１）、干渉が生じたシートが残っている場合には、ステップ１０９に戻り、上記したステップ１０９，１１０の処理を実行し、全シート相互干渉がなくなったときは、インターロック時間を含むサイクルタイムを求め（ＳＴ１１２）、スプレッドシートで求めた干渉結果データをファイルに保存し（ＳＴ１１３）、シミュレータに、干渉結果データを読み込み、インターロック制御をシミュレーション表示し（ＳＴ１１４）、処理を終了する。
【００３７】
以下、上記した各ステップにおける処理を説明する。まず、ステップ１０１のシミュレータでのシミュレーションモデルの作成並びにステップ１０２のシミュレータでのオフラインティーチングは以下のように行われる。
【００３８】
（１）仮想空間上でロボットを組み立てる。具体的には、パーツリストから、ボディ，肩，関節，腕，手首等のパーツを呼び出し、座標値を図面どおりに合わせて、運動方向をもったデバイスとして定義する。
（２）関節の動作範囲パラメータ，速度パラメータ，度範囲パラメータ等を設定する。
（３）ロボットを動作させる位置座標を定義する。
（４）シミュレーション言語で、ロボットの位置座標に到達する順番をプログラムする。
（５）シミュレーション実行と、（３），（４）の修正により、シミュレータ画面上で、オフラインティーチングを実行する。
【００３９】
なお、実機ティーチングデータを利用する手順は以下のとおりである。
（１）実機ティーチングデータを選択する。
（２）必要な機種のトランスレータを選択する。
（３）ロボットの各軸のパルス分解能とゼロ位置を設定する。
（４）シミュレータの実機ティーチングデータをアップロードし、シミュレーションプログラムに変換する。
（５）シミュレーションを実行する。
【００４０】
また、ステップ１０３のロボットの動作領域データのファイルへの記録は以下のように行われる。すなわち、まず、動作領域計算に際しては、図８に示すように、対象ロボットＲＢＴ１台ごとに、シミュレータを使って、単位時間あたりの動作領域を、直方体によって代表させて算出し、その座標値を保存する。
【００４１】
（１）動作領域を計算するロボットを選択し、シミュレータに読み込む。
（２）単位時間Ｔあたりのロボット動作領域をシミュレーションより求める。
（３）ロボットのパーツ１，２，……に対する動作領域を覆う最小の直方体を計算する。必要なパーツすべてについてそれぞれ直方体を計算する。
（４）直方体の両端の２座標を動作領域ファイルへ保存する。なお、各データファイルはロボットの場合、作動領域データファイル，領域Ｄｅｖｉｃｅファイル，領域Ｐａｒｔファイルに保存される。
【００４２】
ここでは、説明のため、動作領域を覆う最小の直方体としているが、精度をあげるために動作領域を覆う多面体としても同じである。単位時間Ｔは、求める精度によって変更することができる。単位時間を小さくとると精度は向上するが、動作領域データの量は増加する。
【００４３】
ステップ１０５の動作領域データファイルのスプレッドシートへの読み込みは以下のようにして行われる。まず、スプレッドシートから、読み込む動作領域データファイルを選択する。次に、ロボット１台につき、スプレッドシート上に１シートを追加し、読み出したデータが表示される。これにより、ロボットの台数だけシートが作成される。
【００４４】
本発明はロボット１台について１シートが作成され、シートの所定セルのデータを変更するようにしているので、ロボットの台数が増えても、同じ操作で、干渉を防ぐことができる。図９に示すように、動作領域データは、
縦軸：前の時刻からその時刻までの領域データを表示
（時刻はＡ列に表示）
横軸：ロボットの各パーツの領域データ（直方体の２頂点の座標）を表示
（頂点１のＸ，Ｙ，Ｚ座標），（頂点２のＸ，Ｙ，Ｚ座標）
で表している。
【００４５】
そこで、ステップ１０６のマクロでのロボット相互干渉している部分のチェックは、例えば、ユーザが図１０（ａ）に示すダイアログボックスの“ＣｈｅｃｋＣｏｌｌｉｓｉｏｎ”ボタンをクリックすることで行われる。
【００４６】
ステップ１０７の干渉した部分の座標値の表示は、図１１に示すように、強調表示される（強調表示個所を符号Ｉで示す）。ここでは、一度に２台のロボット間のある時刻の指定が行われる。
【００４７】
さらにクリックすると、次の時刻の干渉チェックを行う。最後の時刻までチェックするとチェック完了となる。領域データが３ロボット分以上ある場合、あるロボット間のチェックが完了すると別のロボット間のチェックを開始する。
【００４８】
チェック結果データは、各シートのデータをそれぞれチェック結果ファイルに保存される。このときのファイル名は、例えば＜領域ファイル名＞＋“＿Ｒｓｔ．ｃｓｖ“で自動割り付けされるようにできる。なお、保存先フォルダの指定は、図１０（ａ）のダイアログの“Ｒｅｆｅｒｅｎｃｅ”をクリックすることで、図１０（ｂ）に示すダイアログを開き、これより選択することもできる。
【００４９】
ステップ１０９のスプレッドシートでのインターロック制御による停止時間の挿入（インターロック待ちを発生）は、スプレッドシートのセル操作により行われる。すなわち、一度メインダイアログを終了し、図１２に示すようにインターロック待ちを発生させたい時刻以降のデータを待ち時間分下方へ移動させる（図１２において、白抜き矢印で示す）。
【００５０】
ステップ１１０のロボットが相互干渉している部分のチェックは、再び図１０（ａ）に示したダイアログを表示させ、“Ｃｈｅｃｋ  Ｃｏｌｌｉｓｉｏｎ”ボタンをクリックする。また、適宜メニューに用意された“Ｐｌａｙ  ＣｈｅｃｋＲｅｓｕｌｔ”ボタンをクリックすることで、ロボット及び干渉チェック結果ファイルを選択して、シミュレータで干渉結果データを再生することができる。
ステップ１１２では、インターロック待ちを挿入されている場合に、時刻データの再割付が行われる。
【００５１】
ステップ１１３のスプレッドシートで求めた干渉結果データのファイルへの保存は、図１０（ａ）のダイアログの“Ｓａｖｅ  Ｒｅｓｕｌｔを”クリックし保存先フォルダを指定することで行われる。全てのシートのデータは、同時にファイルに保存する。
ステップ１１４の干渉結果データの読み込み，インターロック制御のシミュレーション表示は以下のように行われる。
【００５２】
（１）シミュレータで、干渉チェック結果データを再生するロボットを選択して読み込む。
（２）で選択したロボットに対応する干渉チェック結果ファイルを選択して読み込む。
（３）２台目のロボットについて（１），（２）を行う。
（４）スプレッドシートで行った干渉チェックの結果ファイルを読み込む。インターロック待ちの時間は、シミュレータ上のロボットを停止するシミュレーション表示を行う。
【００５３】
表１に、干渉チェックプログラムの機能を示す。
【００５４】
【表１】
2004280635.tif 000003
【００５５】
干渉チェックプログラムのロジックは、以下の通りである。チェックするセルに記述されている直方体頂点座標データをそれぞれ、ロボットＲＢＴ１（ｘＡ１，ｙＡ１，ｚＡ１），（ｘＡ２，ｙＡ２，ｚＡ２）、ロボットＲＢＴ２（ｘＢ１，ｙＢ１，ｚＢ１），（ｘＢ２，ｙＢ２，ｚＢ２）とする。２つのロボットが干渉している場合のパターンとして、ｘ軸のみで考えると、図１３（ａ），（ｂ）に示すようになる。このパターンがＸ，Ｙ，Ｚの全ての軸で成り立つ場合、２つの直方体が干渉していると判断することができる。よって、同一の時刻、つまりスプレッドにおいて、同一行に存在するセルに格納された領域データに基づき、Ｘ，Ｙ，Ｚの全てで上記の条件を満たす箇所があるか否かを判断することにより、干渉が生じているか否かを判断することができる。
【００５６】
１回のチェックコマンド実行で、あるロボット間のある時刻のチェックを行う。また、あるロボット間で全ての時刻の干渉チェックが完了すると、別のロボット間のチェックを行い、全てのロボット間のチェックが完了した時点で、チェック終了とする。
【００５７】
次に、本発明の他の実施の形態を説明する。本実施の形態では、生産ラインとして、一般の加工機械と治具を組み合わせた自動機ラインのインターロックを対象としている。
【００５８】
ロボットに関しては、既に説明したように、コントローラ側で干渉域座標値を定義して、干渉域に入るか出るかの検出によってインターロック制御のロジックを制御用ＰＬＣで実現する。ところが、一般の加工機械と治具では、コントローラ側に干渉域定義ができる機能は通常はない。したがって、ロボット動作パスの随所でインターロック制御を挿入することが可能となるが、一般の加工機械と治具では、決まった位置でしか挿入できない。よって、リミットスイッチなどのセンサの位置で決まってくる。
【００５９】
ロボットでは、ティーチングプログラムを利用してシミュレーションを実行できるが、加工機械と治具を組み合わせた自動機ラインでは、ティーチングプログラムはない。そこで、ロボットにおける実施の形態の手順に以下に示すような追加が必要になる。
【００６０】
（１）シミュレーション対象の加工機，治具のシミュレーションプログラムを作成する。
（２）次に、加工機の動作を領域記録する時に、加工機，治具に関しては一連の動作で、ＰＬＣ制御単位に細分化して保存する。
【００６１】
例えば、ドリル穴あけの一連の作動において、ドリル前進→ドリル下降→ドリル上昇→ドリル後退というように検出できる動作単位ごとに分割してシミュレーションし、ファイルに保存する。ドリル形状を直方体とみなすのは先に説明した実施の形態と同じである。ここで、検出できる動作単位とは、例えば、センサのＯＮ／ＯＦＦ情報やモーションコントロールの完了信号など、動作を区切ることができる単位である。
【００６２】
（３）動作単位ごとに分割シミュレーションした位置データは直方体の領域データとみなして、同一のスプレッドシートに読み出す。動作タイミングの順に順次上から追加表示していく。
（４）制約条件として、干渉チェック時、分割読み出ししたシートにおいては、分割単位でしかデータ移動できない。
【００６３】
このような手順を追加することで、一般の加工機と治具を持つ生産ラインに対して動作時間の算出がスプレッドシートを用いてできる。
【００６４】
もし、加工機，治具に対して随所にインターロック制御を追加すると、例えばドリル下降中にインターロック制御用のセンサを追加することになる。機種追加時にインターロック制御タイミングを追加する場合、このためのセンサを追加することになる。
【００６５】
図１４，図１５は、加工機，治具についてのインターロック制御による手順を追加したフローチャートを示している。まず、３次元シミュレータで加工機，治具のシミュレーションモデルを作成し（ＳＴ２０１）、シミュレーションモデル上でセンサなど動作の区切りとなる位置情報を検出するプログラムを作成し（ＳＴ２０２）、シミュレーションを実行し加工機，治具の作動領域データをファイルに記録する（ＳＴ２０３）。そして、ステップ２０１〜２０３の処理を、必要な加工機，治具分について繰り返す（ＳＴ２０４）。
【００６６】
次いで、スプレッドシートに作動領域データファイルを読み込み（ＳＴ２０５）、スプレッドシートのマクロで加工機，治具が相互干渉している部分をチェックし（ＳＴ２０６）、スプレッドシートに干渉した部分の座標値を表示する（ＳＴ２０７）。
【００６７】
そして、干渉した加工機・治具のパスを修正できるか否かを判断し（ＳＴ２０８）、修正できない場合にはステップ１０２に戻り、修正できるようになるまでステップ２０２〜２０７の処理を実行する。
【００６８】
加工機，治具のパスを修正できる場合には、スプレッドシートでインターロック制御による停止時間を挿入し（ＳＴ２０９）、加工機，治具が相互干渉している部分をチェックする（ＳＴ２１０）。全シート相互干渉がなくなっていないときには、再度処理をステップ２０９に戻しステップ２０９，ステップ２１０の処理を実行する（ＳＴ２１１）。そして、全シート相互干渉がなくなったときは、インターロック時間を含むサイクルタイムを求め（ＳＴ２１２）、スプレッドシートで求めた干渉結果データをファイルに保存し（ＳＴ２１３）、処理を終了する。
【００６９】
【発明の効果】
本発明では、自動化設備で、複数のロボットが同時に動作する際、或いは加工機械及び／または治具が同時に動作する際に、ロボット間の相互干渉、或いは加工機械及び／または治具との間の相互干渉を回避することができる。
【図面の簡単な説明】
【図１】本発明のシミュレーション装置の概要を示す機能ブロック図である。
【図２】図１のシミュレーション装置を具体的に示すブロック図である。
【図３】制御装置と、これによりインターロック制御される実機ロボットを示す図である。
【図４】制御用ＰＬＣによるインターロック制御を行わない場合のロボット同士が衝突する様子を示す図である。
【図５】制御用ＰＬＣのインターロック制御を行いインターロック待ちによりサイクルタイムが長くなった様子を示す図である。
【図６】本発明のシミュレーション装置における処理の前半を示すフローチャートである。
【図７】本発明のシミュレーション装置における処理の後半を示すフローチャートである。
【図８】シミュレーション処理における動作領域計算に際しての説明図である。
【図９】スプレッドシード上の動作領域データを示す図である。
【図１０】ユーザが処理するためのダイアログを示す図である。
【図１１】スプレッドシード上の動作領域データのうち、干渉があるために強調表示された様子を示す図である。
【図１２】スプレッドシード上でインターロック待ちを発生させたい時刻以降のデータを待ち時間分下方へ移動させる様子を示す図である。
【図１３】干渉チェックプログラムのロジックの説明図である。
【図１４】本発明のシミュレーション装置における処理の前半を示すフローチャートである。
【図１５】本発明のシミュレーション装置における処理の後半を示すフローチャートである。
【符号の説明】
１  シミュレーション装置
１１  軌跡情報記録部
１２  干渉検出部
１３  座標値データ移動部
１４  サイクルタイム計算部
２１  シミュレータ
２２  干渉チェックプログラム
２３  スプレッドシート
２４  干渉チェック・インターロック時間追加プログラム
３１  制御用ＰＬＣ
ＩＲ  相互干渉領域
ＲＢＴ１，ＲＢＴ２  ロボット
【図１】
2004280635.tif 000004
【図２】
2004280635.tif 000005
【図３】
2004280635.tif 000006
【図４】
2004280635.tif 000007
【図５】
2004280635.tif 000008
【図６】
2004280635.tif 000009
【図７】
2004280635.tif 000010
【図８】
2004280635.tif 000011
【図９】
2004280635.tif 000012
【図１０】
2004280635.tif 000013
【図１１】
2004280635.tif 000014
【図１２】
2004280635.tif 000015
【図１３】
2004280635.tif 000016
【図１４】
2004280635.tif 000017
【図１５】
2004280635.tif 000018