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