(57)【特許請求の範囲】
【請求項１】
ガンユニットを備えた多関節ロボットの干渉回避方法において、
前記ガンユニットのアームまたは電極により一部包囲されたガン内部空間を規定する第１のステップと、
溶接するワークのうち、前記ガン内部空間に存在する対象ワーク部分を抽出する第２のステップと、
前記多関節ロボットを動作させたときに、前記ガンユニットと前記対象ワーク部分との干渉の有無を調査する第３のステップとを有することを特徴とする多関節ロボットの干渉回避方法。
【請求項２】
請求項１記載の多関節ロボットの干渉回避方法において、
前記ワークは、複数のブロックで近似されたモデルであることを特徴とする多関節ロボットの干渉回避方法。
【請求項３】
請求項１または２記載の多関節ロボットの干渉回避方法において、
前記ガン内部空間は、複数のブロックで近似されたモデルであることを特徴とする多関節ロボットの干渉回避方法。
【請求項４】
請求項２記載の多関節ロボットの干渉回避方法において、
前記第３のステップは、前記ブロックの各中心点座標との距離の二乗和が最小となる基準線を規定する第４のステップと、
前記多関節ロボットの調査終了位置を前記基準線上に設定する第５のステップと、
多関節ロボットの調査開始位置から、前記調査終了位置まで動作させて、前記ガンユニットと前記対象ワーク部分との干渉の有無を調査する第６のステップとを有することを特徴とする多関節ロボットの干渉回避方法。
【請求項５】
請求項２記載の多関節ロボットの干渉回避方法において、
前記第３のステップは、前記ブロックの各中心点座標との距離の二乗和が最小となる基準線を規定する第４のステップと、
前記基準線に基づいて、前記対象ワーク部分の重心位置を規定する第７のステップと、
多関節ロボットの調査開始位置から、前記重心位置まで動作させて、前記ガンユニットと前記対象ワーク部分との干渉の有無を調査する第８のステップとを有することを特徴とする多関節ロボットの干渉回避方法。
【請求項６】
請求項５記載の多関節ロボットの干渉回避方法において、
前記対象ワーク部分のうち、前記対象ワーク部分の前記重心位置より前記開口部に近い部分を新たな対象ワーク部分として抽出し、前記第３のステップ以降を行うことを特徴とする多関節ロボットの干渉回避方法。
【請求項７】
ガンユニットを備えた多関節ロボットの干渉回避に使用されるものであって、コンピュータにて読み取り実行可能なプログラムにおいて、
前記ガンユニットのアームまたは電極により一部包囲されたガン内部空間を規定する第１のステップと、
溶接するワークのうち、前記ガン内部空間に存在する対象ワーク部分を抽出する第２のステップと、
前記多関節ロボットを動作させたときに、前記ガンユニットと前記対象ワーク部分との干渉の有無を調査する第３のステップとを有することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多関節ロボットの干渉回避方法およびプログラムに関し、特に、ガンユニットを備えた多関節ロボットがワークに干渉することがなく溶接ポイントに正確に到達することができる進入経路および引戻し経路を求める多関節ロボットの干渉回避方法およびプログラムに関する。
【０００２】
【従来の技術】
従来、製造ラインに設置された多関節ロボットを直接操作させて作業姿勢のティーチングを行おうとすると、多関節ロボットの操作を熟知したオペレータが製造ラインの現場で作業を行わなければならないため、その分、作業が非効率的となってしまう。また、その作業は、製造ラインを停止させた状態で行う必要があるために当該製造ラインの稼動率も低下してしまう。
【０００３】
そこで、近時、前記ティーチングの効率化を図るため、あるいは、前記製造ラインの稼動率を向上させるために、オフラインによるティーチング（オフラインティーチング）が行われている。すなわち、コンピュータ上に多関節ロボット、作業対象物であるワークおよび周辺構造物のモデルを構築し、このモデルを用いてティーチングデータを作成した後、前記ティーチングデータを現場の多関節ロボットに供給するようにすれば、ティーチングデータの作成中に製造ラインを停止させる必要がない。
【０００４】
【発明が解決しようとする課題】
ところで、上述のオフラインティーチングにおいては、主にロボットの姿勢をモニタ上に映し出して決定することから、ロボットとワークとの干渉（接触等）やロボットとその他の工場内の設備との干渉を調査するには、人手による作業に頼っているのが現状である。
【０００５】
人手作業の場合、ロボットがワークやその他の設備と干渉しない非干渉領域を抽出するのに時間がかかり、その判断も個人によって異なり、抽出ポイントの見落としや抜けがどうしても生じるという問題がある。
【０００６】
このように、オフラインティーチングにてロボットの姿勢を決定する場合も、その作業は、必ずしも容易ではない。特に溶接点からワークに干渉しないようにガンユニットを待避させる経路の検索は、ワークが複雑な立体形状である場合にはモニタ画面上で行うことは困難であり、ティーチングにかかる時間もあまり短縮されていない。
【０００７】
本発明はこのような課題を考慮してなされたものであり、多関節ロボットの作業経路のうち、特に溶接点からガンユニットを引き抜く際にワークに干渉しないような引き抜き経路をオフラインティーチングする場合において、その経路を決定する工程を自動化し、熟練を要せずに短時間でティーチングデータを作成することができる多関節ロボットの干渉回避方法およびプログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明に係る多関節ロボットの干渉回避方法および本発明に係るプログラムは、ガンユニットのアームまたは電極により一部包囲されたガン内部空間を規定する第１のステップと、溶接するワークのうち、前記ガン内部空間に存在する対象ワーク部分を抽出する第２のステップと、前記多関節ロボットを動作させたときに、前記ガンユニットと前記対象ワーク部分との干渉の有無を調査する第３のステップとを有することを特徴とする。ここで、前記多関節ロボット、前記ガンユニット、ワークおよび周辺構造物はコンピュータによるプログラム処理でモデルとして構成された仮想のものである。
【０００９】
これにより、多関節ロボットの作業経路をオフラインティーチングする際に、その経路を決定する工程を自動化し、熟練を要せずに短時間でティーチングデータを作成することができる。
【００１０】
そして、前記ワークは、複数のブロックで近似されたモデルであってもよい。
【００１１】
さらに、前記ガン内部空間は、複数のブロックで近似されたモデルであってもよい。
【００１２】
また、前記第３のステップは、前記ブロックの各中心点座標との距離の二乗和が最小となる基準線を規定する第４のステップと、前記多関節ロボットの調査終了位置を前記基準線上に設定する第５のステップと、多関節ロボットの調査開始位置から、前記調査終了位置まで動作させて、前記ガンユニットと前記対象ワーク部分との干渉の有無を調査する第６のステップとを有するようにしてもよい。
【００１３】
またさらに、例えば前記第６のステップにおいて干渉があると判断された場合に、前記第３のステップは、前記ブロックの各中心点座標との距離の二乗和が最小となる基準線を規定する第４のステップと、前記基準線に基づいて、前記対象ワーク部分の重心位置を規定する第７のステップと、多関節ロボットの調査開始位置から、前記重心位置まで動作させて、前記ガンユニットと前記対象ワーク部分との干渉の有無を調査する第８のステップとを有するようにしてもよい。
【００１４】
さらにまた、例えば前記第６のステップにおいて干渉があると判断された場合に、前記対象ワーク部分のうち、前記対象ワーク部分の前記重心位置より前記開口部に近い部分を新たな対象ワーク部分として抽出し、前記第３のステップ以降を行うようにしてもよい。
【００１５】
【発明の実施の形態】
以下、本発明に係る多関節ロボットの干渉回避方法およびプログラムの実施の形態例について図１〜図１５を参照しながら説明する。
【００１６】
図１は、本実施の形態において利用するオフラインティーチング装置１０と、前記オフラインティーチング装置１０により作成されたティーチングデータに基づき作業対象物に対して所望の作業を行うロボット装置１２とを示す。
【００１７】
オフラインティーチング装置１０は、制御部１４と、モニタ１６と、制御部１４に対して入出力指示を行うためのキーボード１８およびマウス２０とを備え、多関節ロボット５０の動作のティーチングを行うものである。
【００１８】
ロボット装置１２は、多関節ロボット５０と、前記ティーチングデータに基づいて前記多関節ロボット５０の動作制御を行うロボット制御部２２とを備える。
【００１９】
図３および図４に示すように、多関節ロボット５０は、取付台である第１ベース５４と、第２ベース５６と、第１リンク５８、第２リンク６０および第３リンク６２と、円筒状のガン着脱部６４等から構成され、このガン着脱部６４にはガンユニット５２が接続されている。
【００２０】
そして、第１ベース５４と第２ベース５６は鉛直軸Ｌ０を軸心として回転する軸Ｊ１により接続されている。第２ベース５６と第１リンク５８の基端は鉛直平面内で回転する軸Ｊ２により接続され、第１リンク５８の先端と第２リンク６０の基端は鉛直平面内で回転する軸Ｊ３により接続されて、また、第２リンク６０の先端と第３リンク６２の基端は鉛直平面内で回転する軸Ｊ４により接続されている。第３リンク６２の先端はガン着脱部６４と軸Ｊ５により接続されており、この軸Ｊ５は第３リンク６２の中心軸線Ｌを中心に回転する。
【００２１】
また、ガン着脱部６４に接続されたガンユニット５２はいわゆるＣ型溶接ガンであり、前記中心軸線Ｌ上に沿って開閉する一対の電極７０、７２を有する。この電極７０、７２は閉状態では前記中心軸線Ｌ上の溶接作業点（以下、ＴＣＰ（Tool Center Point）という）でワーク８０に接触する。
【００２２】
ＴＣＰから本体側の電極７２の軸心に一致する方向を電極ベクトルＺｒ（ガンユニット基準ベクトル）とし、電極ベクトルＺｒに直交しアーム７４と逆側に向く方向をアームベクトルＸｒとする。また、アームベクトルＸｒ、電極ベクトルＺｒに互いに直交する方向を横ベクトルＹｒとする（図４参照）。
【００２３】
軸Ｊ１、Ｊ２、Ｊ３、Ｊ４およびＪ５の駆動機構並びに電極７０、７２の開閉機構は、それぞれ図示しないアクチュエータにより駆動され、ＴＣＰは軸Ｊ１の回転角θ１、軸２の回転角θ２、軸３の回転角θ３、軸４の回転角θ４、軸Ｊ５の回転角θ５および多関節ロボット５０の各部の寸法により決定される。
【００２４】
本実施の形態では、多関節ロボット５０は５軸型として説明したが、６軸以上であっても適用可能であることはもちろんであり、またここでいう軸とは回転動作だけでなく伸縮動作や移動動作を含むものである。
【００２５】
また、ガンユニット５２はＣ型溶接ガンに限らず、例えば図５に示すＸ型溶接ガン（共通の支軸に軸支された開閉する一対のガンアームを備える溶接ガン）５２ａであってもよい。
【００２６】
オフラインティーチング装置１０を構成する制御部１４は、図２に示すように、オフラインティーチング装置１０の全体の制御を行うＣＰＵ２６と、不揮発性記憶部であるＲＯＭ２８と、揮発性記憶部であるＲＡＭ２９と、ハードディスクドライブ（ＨＤＤ）３４と、モニタ１６の画面上における描画制御を行う描画制御回路３０と、キーボード１８およびマウス２０が接続されるインタフェース回路３２と、外部記録媒体３６ａを制御する記録媒体ドライブ３６と、ティーチングデータを作成するデータ作成回路３８と、ティーチングデータに基づきモニタ１６の画面上でシミュレーションを行うシミュレーション回路４０とを有する。このシミュレーション回路４０は、３次元ＣＡＤをベースにしており前記モデルを作成したり、該モデル相互の干渉（接触等）を調査したりする機能を持つ。
【００２７】
次に、本実施の形態に係る多関節ロボットの干渉回避方法について図６〜図１５を参照しながら詳細に説明する。
【００２８】
本実施の形態においては、ガンユニット５２をワーク８０の溶接箇所から引き抜く経路を求めるために主に３つの方法を用いている。
【００２９】
第１には、当該溶接箇所から引き抜き点まで直接的に移動させる方法であり、第２には、当該溶接箇所からワーク８０の重心まで移動させる方法であり、さらに第３には、ワーク８０のうちガンユニット５２の開口部に近い部分だけを抽出して、その抽出した部分を優先して引き抜き経路を求める方法である。
【００３０】
また、ワーク８０は複数のブロックでモデル化して扱うこととして、処理の高速化を図っている。
【００３１】
なお、本実施の形態では多関節ロボット５０、ワーク８０およびその周辺構造物はオフラインティーチング装置１０において、仮想のモデルとして扱うが、以下の説明では現実の装置と同じ符号を用いて表記する。
【００３２】
まず、図６のステップＳ１において、多関節ロボット５０のガンユニット５２が、ワーク８０の溶接ポイントＰ０を溶接する位置に設定する。
【００３３】
溶接ポイントＰｎ（ｎは多関節ロボット５０がとる姿勢の順番を示す。以下同じ）はそれぞれ空間上の位置を表す高さ（Ｈ）、幅（Ｗ）、奥行き（Ｄ）各方向の３つの座標値と、前記アームベクトルＸｒ、前記横ベクトルＹｒ、前記電極ベクトルＺｒの合計６つの座標値から構成されている。
【００３４】
そして、溶接ポイントＰ０は初期位置となるので、多関節ロボット５０がとる姿勢の順序を示す表であるパステーブル１１０に書き込んで初期化する（図９の順番１参照）。
【００３５】
図９に示すように、パステーブル１１０は、「ガンユニットの向き」欄１１０ａ、「ＴＣＰの位置」欄１１０ｂおよび「多関節ロボット姿勢」欄１１０ｃから構成されており、「多関節ロボット姿勢」欄１１０ｃは回転角θ１〜θ５から構成されている。
【００３６】
なお、パステーブル１１０は、ＲＡＭ２９やＨＤＤ３４内に記録されるが、必要に応じてモニタ１６の画面に表示されまたは印刷され得る。
【００３７】
次に、図６のステップＳ２において、溶接ポイントＰ０に位置しているガンユニット５２のＴＣＰを調査開始位置Ｐｓとして設定する。
【００３８】
次に、ステップＳ３において、ガンユニット５２の略中央部分でアーム７４および電極７０、７２が見渡せる位置に中央点Ｃ（図１０Ａ参照）を規定する。そして、中央点Ｃから所定の角度幅で放射状の直線９０を設定し、アーム７４および電極７０、７２との交点９２を求める。
【００３９】
なお、説明を簡略化するために平面上で交点９２を求めるようにしているが、実際は奥行き方向のデータも利用し立体形状における交点を求めるものであり、これに従い後述のワークモデル９６やソリッド（ブロック）９４も面ではなく立体形状として扱っている。
【００４０】
次に、ステップＳ４において、図１０Ｂに示すように複数の交点９２を線分で連結して閉区間９２ａを形成する環状線９２ｂを設定する。そして、閉区間９２ａ上に所定の間隔をもつ格子状の線を設定し、この格子状の線の交点のうち閉区間９２ａ内に存在する交点９２ｃを抽出する。
【００４１】
次に、ステップＳ５において、図１１Ａに示すように抽出した交点９２ｃを中心に正方形の面であるソリッド９４を隙間がないように埋めてガン内部空間として設定する。
【００４２】
次に、ステップＳ６において、図１１Ｂに示すようにワーク８０をガンユニット５２との相対位置が整合するように配置させる。そして、ワーク８０とソリッド９４が重複する部分をワークモデル９６（対象ワーク部分、図１１Ｃ参照）として抽出する。このとき、ワーク８０のうちソリッド９４に重複しない部分８０ａは干渉を調査する際に無関係になるため排除される。また、ワークモデル９６を構成している各ソリッド９４はワークソリッド９８として区別するものとし、ガンユニット５２が移動した場合もワークモデル９６および各ワークソリッド９８は初期の位置が固定される。
【００４３】
このように、ワーク８０は複数のブロックでモデル化して扱うので処理が容易になるとともに、ワーク８０のうち不要な部分（例えば、重複しない部分８０ａ）が自動的に排除されるので無駄な処理を行うことがない。
【００４４】
次に、ステップＳ７において、主成分分析の手法によりワークモデル９６の主成分線（基準線）Ｍ１を算出する。
【００４５】
この主成分線Ｍ１の算出方法を詳細に説明すると、まず、図１２Ａに示すように各ワークソリッド９８の中心点座標９８ａ（Ｘｓ、Ｙｓ、Ｚｓ）を規定する。
【００４６】
次に、図１２Ｂに示すように、各中心点座標９８ａと主成分線Ｍ１との距離ｓの二乗和が最小になるようにする。つまり、
Σ｜ｓ｜2＝ｍｉｎ
となる主成分線Ｍ１を規定する。より具体的には、各中心点座標９８ａから分散、共分散行列の固有値、固有ベクトルを算出し、さらにＸｓ、Ｙｓ、ＺｓからＸ、Ｙ、Ｚ各座標の平均値である重心位置Ｇ１を求め、この重心位置Ｇ１を通る前記固有ベクトルが主成分線Ｍ１になる。
【００４７】
以降のステップＳ８〜ステップＳ１２においては、図１３に示すように、調査開始位置Ｐｓから引き抜き位置（調査終了位置）Ｐｅまで直線状に動作させた場合に干渉がないかどうかを調査する。
【００４８】
すなわち、まずステップＳ８において、引き抜き位置Ｐｅを求める。この引き抜き位置Ｐｅは、図１３に示すように、前記主成分線Ｍ１上の点でガンユニット５２のＴＣＰを基準とするアームベクトルＸｒを主成分線Ｍ１に一致させながら移動し、ガンユニット５２および電極７０、７２が干渉しなくなった箇所を引き抜き位置Ｐｅとして設定する。
【００４９】
次に、ステップＳ９において、引き抜き位置Ｐｅにより規定されるガンユニット５２の位置および姿勢に基づいて多関節ロボット５０の姿勢、つまり回転角θ１〜θ５を求める。この演算方法は引き抜き位置Ｐｅの空間上の位置座標（Ｈ、Ｗ、Ｄ）および、ガンユニット５２の姿勢を表すアームベクトルＸｒ、横ベクトルＹｒ、電極ベクトルＺｒで規定される合計６つの値と多関節ロボット５０の各部の寸法等から周知の行列演算手法（以下、逆演算という）を適用すればよい。
【００５０】
次に、分岐判断のステップＳ１０において、ステップＳ９の逆演算における解が正常に求まったか、つまり前記ＴＣＰが引き抜き位置Ｐｅに到達可能かを判断する。解が求まらなかったり、求まっていてもその角度値が軸Ｊ１〜Ｊ５の回転稼動範囲外であったり、また、求まった姿勢において多関節ロボット５０が他の構造物と干渉（例えば、他のワークや工場内の柱と第１リンク５８、第２リンク６０等と干渉）していればステップＳ１１へ移り、そうでない場合、つまり解が正常に求まるならばステップＳ１２へ移る。
【００５１】
この、干渉調査において、ガンユニットにＸ型溶接ガン５２ａを採用している場合は、特にガンユニットが開状態と閉状態の両方について調べる。
【００５２】
解が正常に求まらなかった場合は、ステップＳ１１において、横ベクトルＹｒを中心にしてα°回転させる回転動作を行う。この回転動作は図１３の二点差線で示すようにガンユニット５２が引き抜き位置Ｐｅを中心にしてワークモデル９６に干渉させない範囲で回転させることを意味する。そして、この状態のアームベクトルＸｒ、横ベクトルＹｒ、電極ベクトルＺｒを求めた上でステップＳ９に戻る。また、角度α°はプラスとマイナスの両方向の角度として調査してもよい。
【００５３】
なお、ステップＳ９〜ステップＳ１１で形成されるループが何度か連続して実行された場合は、引き抜き位置Ｐｅを主成分線Ｍ１上のより遠方位置で多関節ロボット５０の姿勢が成立する適当な箇所に設定し直し、そして次のステップＳ１２へ移る。
【００５４】
またさらに、このα°回転させる処理は、横ベクトルＹｒを中心にするだけでなく、アームベクトルＸｒまたは電極ベクトルＺｒなどの軸まわりに回転させるようにしてもよい。以下の回転の処理においても同様である。
【００５５】
次に、図７に移り、ステップＳ１２において、図１３の経路Ｖ１に示すように、ガンユニット５２を調査開始位置Ｐｓから引き抜き位置Ｐｅまで直線状に動作させて、アーム７４、電極７０、７２とワークモデル９６とが干渉しないか調査をする。この干渉の調査は前記シミュレーション回路４０が持つ機能により自動的に調査するが、モニタ１６の画面上でオペレータが監視することにより行ってもよい。シミュレーション回路４０を用いると、２次元的な表現であるモニタ１６の画面では分からない３次元的な調査を確実に行うことができる。
【００５６】
そして、分岐判断のステップＳ１３において、前記ステップＳ１２の調査により干渉があると判断された場合はステップＳ１４に移り、干渉がないと判断された場合はこの１回の動作で直接引き抜き動作が可能なので終了処理であるステップＳ３１に移る。
【００５７】
このように、ワーク８０の形状が単純なものである場合には、１回の動作で引き抜き経路を決定することができるので処理時間の短縮を図ることができる。
【００５８】
なお、図１３に示す例では経路Ｖ１を移動させる途中で、電極７０がワークモデル９６の突部９６ａに干渉することが明らかであり、この場合ステップＳ１４へ移る。
【００５９】
以降のステップＳ１４〜ステップＳ１８においては、調査開始位置Ｐｓからワークモデル９６の重心位置Ｇ１まで直線状に動作させた場合に干渉がないかどうかを調査する。
【００６０】
ステップＳ１４において、図１４に示すように、調査開始位置Ｐｓと前記重心位置Ｇ１とを結ぶ経路Ｖ２を規定し、そして、アームベクトルＸｒを重心位置Ｇ１を基準にして経路Ｖ２に一致させたガンユニット５２の姿勢を仮定する。
【００６１】
そして、ステップＳ１５において、この仮定した姿勢で多関節ロボット５０の姿勢を前記逆演算により求める。
【００６２】
次に、分岐判断のステップＳ１６において、前記ステップＳ１０と同様に逆演算における解が正常に求まったかを調べる。このとき逆演算処理に加えて、ガンユニット５２がワークモデル９６に干渉しないかについて調査しておいてもよい。
【００６３】
解が正常に求まらなかった場合は、前記ステップＳ１１と同様に、横ベクトルＹｒを中心にしてα°回転させる回転動作を行う（ステップＳ１７）。そして、この状態のアームベクトルＸｒ、横ベクトルＹｒ、電極ベクトルＺｒを求めた上でステップＳ１５に戻る。
【００６４】
解が求まる場合は、ステップＳ１８において、前記ステップＳ１２と同様に、ガンユニット５２を調査開始位置Ｐｓから重心位置Ｇ１まで経路Ｖ２に沿って直線状に動作させて干渉の調査をする。
【００６５】
なお、ステップＳ１５〜ステップＳ１７で形成されるループが何度か連続して実行された場合は、重心位置Ｇ１へガンユニット５２を配置することができないと判断し、この処理を打ち切りマスク処理であるステップＳ２４へ移る。
【００６６】
そして、前記ステップＳ１８および後述のステップＳ３０の調査により干渉があると判断された場合は、分岐判断のステップＳ１９を通じてステップＳ２４に移り、干渉がないと判断された場合はこの重心位置まで動作できたものとして次のステップＳ２０に移る。
【００６７】
このステップＳ２０においては、その時点における多関節ロボット５０の姿勢を前記パステーブル１１０に追加し書き込む。
【００６８】
そして、ステップＳ２１において、前記ステップＳ１２と同様に、その時点におけるガンユニット５２の位置から引き抜き位置Ｐｅまで直線状に動作させて、干渉しないか調査をする。図１４に示す例では主成分線Ｍ１に沿って調査することになる。
【００６９】
そして、分岐判断のステップＳ２２において、前記ステップＳ２１の調査により干渉があると判断された場合はステップＳ２３に移り、干渉がないと判断された場合はこの動作により引き抜き動作が可能なので終了処理であるステップＳ３１に移る。
【００７０】
干渉がある場合、ステップＳ２３において、その時点でのガンユニット５２の位置を新たな調査開始位置として、それまでの調査開始位置Ｐｓに置き換える更新処理をする。すなわち、図１４の例では重心位置Ｇ１までガンユニット５２を引き抜くことができたのであるから、前記ガン内部空間から外れた部分についてはもはや考慮する必要がないと判断されるので、その時点でワークモデル９６を作り直すために調査開始位置Ｐｓも更新する。
【００７１】
また、ガンユニット５２の向きはアームベクトルＸｒがその時点の主成分線の方向に一致するようにしておく。
【００７２】
そして、前記ステップＳ６と同様にワークソリッド９８を抽出して更新し、さらに、前記ステップＳ７と同様に新たな主成分線Ｍ１と新たな重心位置Ｇ１を求めて、それぞれを更新した後ステップＳ１４へ戻る。ステップＳ１４へ戻った後はこのステップＳ２３で求めた新たなワークソリッド９８、主成分線Ｍ１および重心位置Ｇ１に対して処理を続ける。
【００７３】
このようにして、前記ガン内部空間に入らない部分については順次処理対象から除くので、複雑な形状のワーク８０に対してもガンユニット５２を抜く経路を求めることができる。
【００７４】
ただし、ここでステップＳ１４〜ステップＳ２３で形成されるループが、ある規定した回数以上実行されている場合には、当該ワーク８０に対してガンユニット５２を引き抜くことは非常に困難であると判断されるので処理を打ち切って再計画を行う。
【００７５】
次に、前記ステップＳ１９において、経路Ｖｎに沿う動作により干渉があると判断された場合の処理であるステップＳ２４〜ステップＳ３０について説明する。この場合、ワークモデル９６のうちガンユニット５２の開口部に近い部分だけを抽出（マスク処理）して、その抽出した部分を優先して引き抜き経路を求める。
【００７６】
まず、図８のステップＳ２４において、図１５に示すように、重心位置Ｇ１を基準として、ワークモデル９６のうちガンユニット５２の開口部側の部分９６ｂと、開口部と反対側の部分９６ｃに区分けする。この区分けの処理は、開口部に近い部分のみについてガンユニット５２を引き抜くように処理を工夫するものであり、開口部と反対側の部分９６ｃは処理を保留して開口側の部分（新たな対象ワーク部分）９６ｂを抽出する。そして、後の処理であるステップＳ２５〜ステップＳ３０までは、この新たな対象ワーク部分９６ｂをワークモデル９６の代わりとして扱う。
【００７７】
次に、ステップＳ２５において、前記ステップＳ７の処理と同様に新たな対象ワーク部分９６ｂに関して主成分線Ｍ２および重心位置Ｇ２を求める。
【００７８】
そして、ステップＳ２６において、前記ステップＳ１４と同様に、調査開始位置Ｐｓと前記重心位置Ｇ２とを結ぶ経路Ｖ３を規定し、そして、アームベクトルＸｒを重心位置Ｇ２を基準にして経路Ｖ３に一致させたガンユニット５２の姿勢を仮定する。
【００７９】
次に、ステップＳ２７において、前記ステップＳ１５と同様に、この仮定した姿勢で多関節ロボット５０の姿勢を前記逆演算により求める。
【００８０】
次に、分岐判断のステップＳ２８において、前記ステップＳ１６と同様に逆演算における解が正常に求まったかを調べる。
【００８１】
解が正常に求まらなかった場合は、前記ステップＳ１７と同様に、横ベクトルＹｒを中心にしてα°回転させる回転動作を行い（ステップＳ２９）、そして、ステップＳ２７に戻る。
【００８２】
解が求まる場合は、ステップＳ３０において、前記ステップＳ１８と同様に、ガンユニット５２を調査開始位置Ｐｓから重心位置Ｇ２まで経路Ｖ３に沿って直線状に動作させて干渉の調査をする。そして、ステップＳ２２に戻りこの干渉調査の判断を行う。
【００８３】
このように、ワークモデル９６全体を対象に経路検索をしても適当な経路が見つからない場合においても、ワークモデル９６に対してマスク処理を施すことにより、ガンユニット５２の開口部に近い部分のみを優先して引き抜き経路を求めることができる。また、後の処理では前述のステップＳ２３におけるワークモデル９６の更新処理と組み合わせることによりワークモデル９６は順次単純な形状になり引き抜き経路を求めやすくなる。
【００８４】
なお、ステップＳ２７〜ステップＳ２９で形成されるループが何度か連続して実行された場合は、重心位置Ｇ２へガンユニット５２を配置することができないと判断し、さらなるマスク処理を行うためにステップＳ２４へ戻る。ただし、このマスク処理が所定の規定回数以上になったときは、当該ワーク８０の形状にはマスク処理が有効でないと判断し、マスク処理を施さない引き抜き処理であるステップＳ２０に戻り、再度引き抜き経路を算出する。
【００８５】
また、終了処理であるステップＳ３１においては、調査終了位置Ｐｅの座標およびベクトルデータ等をパステーブル１１０に追加し（図９の順番５参照）、そして、オフラインティーチング装置１０は、作成されたパステーブル１１０およびその他の必要なデータをＨＤＤ３４等へ記録保存するとともに、ロボット制御部２２に供給することにより処理が終了する。
【００８６】
上述の説明においては、ガンユニット５２をワーク８０の溶接ポイントから引き抜く経路を求める手法について述べたが、当該溶接ポイントへ進入させる経路についてはパステーブル１１０の順番を逆にして進入用の経路とすればよい。
【００８７】
また、ワークモデル９６の基準線として主成分線を用いたが、これ以外にもワークモデル９６の形状を代表できる線ならば他の基準線、例えば最小二乗法による直線や任意の次数をもつ曲線などを用いてもよい。
【００８８】
なお、この発明に係る多関節ロボットの干渉回避方法およびプログラムは、上述の実施の形態に限らず、この発明の要旨を逸脱することなく、種々の構成を採り得ることはもちろんである。
【００８９】
【発明の効果】
以上説明したように、本発明に係る多関節ロボットの干渉回避方法およびプログラムによれば、多関節ロボットの作業経路のうち、特に溶接点からガンユニットを引き抜く際にワークに干渉しないような引き抜き経路をオフラインティーチングする場合において、その経路を決定する工程を自動化し、熟練を要せずに短時間でティーチングデータを作成することができるという効果が達成される。
【図面の簡単な説明】
【図１】本実施の形態に係るオフラインティーチング装置およびロボット装置を示す構成図である。
【図２】オフラインティーチング装置における制御部の回路構成を示すブロック図である。
【図３】多関節ロボットの構成を示す説明図である。
【図４】図３のうちガンユニット部分を説明する説明図である。
【図５】Ｘ型溶接ガンを示す説明図である。
【図６】本実施の形態に係る多関節ロボットの干渉回避方法を示す工程ブロック図（その１）である。
【図７】本実施の形態に係る多関節ロボットの干渉回避方法を示す工程ブロック図（その２）である。
【図８】本実施の形態に係る多関節ロボットの干渉回避方法を示す工程ブロック図（その３）である。
【図９】パステーブルを示す図である。
【図１０】図１０Ａは、中央点から放射状に線を設定する手順を説明する図であり、図１０Ｂは、格子状に線を引き閉空間内の交点を抽出する手順を説明する図である。
【図１１】図１１Ａは、交点を中心にソリッドを設定する手順を説明する図であり、図１１Ｂは、ソリッドとワークの重複部分を抽出する手順を説明する図であり、図１１Ｃは、抽出されたワークモデルを示す図である。
【図１２】図１２Ａは、各ソリッドの中心点を示す図であり、図１２Ｂは、主成分線を求める手順を説明する図である。
【図１３】引き抜き点を求める手順と、引き抜き経路（Ｖ１）を示す図である。
【図１４】引き抜き経路（Ｖ２）を示す図である。
【図１５】マスク処理を説明する図である。
【符号の説明】
１０…オフラインティーチング装置      １２…ロボット装置
１６…モニタ                          ５０…多関節ロボット
５２…ガンユニット                    ７０、７２…電極
７４…アーム                          ８０…ワーク
９４…ソリッド                        ９６…ワークモデル
９６ｂ…開口側の部分                  １１０…パステーブル
Ｇ１、Ｇ２…重心位置                  Ｍ１、Ｍ２…主成分線
Ｐｓ…調査開始位置                    Ｐｅ…調査終了位置
【図１】
0003715537.tif 000002
【図２】
0003715537.tif 000003
【図３】
0003715537.tif 000004
【図４】
0003715537.tif 000005
【図５】
0003715537.tif 000006
【図６】
0003715537.tif 000007
【図７】
0003715537.tif 000008
【図８】
0003715537.tif 000009
【図９】
0003715537.tif 000010
【図１０】
0003715537.tif 000011
【図１１】
0003715537.tif 000012
【図１２】
0003715537.tif 000013
【図１３】
0003715537.tif 000014
【図１４】
0003715537.tif 000015
【図１５】
0003715537.tif 000016