(57)【特許請求の範囲】
【請求項１】
多関節溶接ロボットのアーム先端に設けられた溶接トーチの移動経路として教示された複数の教示点を連結して構成され、前記溶接トーチの進行方向が途中で変化する主軌道上に、多数の補間点を設け、各補間点に前記主軌道に対して直交する方向の所定の変位量を設定し、前記溶接トーチを各補間点の変位位置に従って移動させることにより、当該溶接トーチを前記主軌道上でウィービング動作をさせながら移動させる溶接ロボット制御装置であって、
隣接する教示点間から前記主軌道の進行方向を演算し、その進行方向が所定の角度以上に変化する教示点を算出する算出手段と、
前記算出手段により算出された教示点の直後の補間点から前記主軌道の進行方向に配置される所定数の補間点について、各補間点の前記変位位置を、前記教示点の直前の補間点の変位位置から前記教示点の直後の補間点の変位位置に向かうベクトルを縮小したベクトルで逆方向に変化させた位置に補正する位置補正手段と、
を備えたことを特徴とする溶接ロボット制御装置。
【請求項２】
前記主軌道の進行方向の変化する角度が増加するのに応じて前記位置補正手段により変位位置が補正される補間点の数を増加させる補正数変更手段を更に備える、請求項１に記載の溶接ロボット制御装置。
【請求項３】
多関節溶接ロボットのアーム先端に設けられた溶接トーチの移動経路として教示された複数の教示点を連結して構成された主軌道上に多数の補間点を設け、各補間点に前記主軌道に対して直交する方向の所定の変位量を設定し、前記溶接トーチを各補間点の変位位置に従って移動させることにより、当該溶接トーチを前記主軌道上でウィービング動作をさせながら移動させる溶接ロボット制御装置であって、
前記教示点間毎の前記ウィービング動作における振幅のデータを記憶する記憶手段と、
前記記憶手段に記憶された振幅のデータに基づいて、前記振幅のデータが所定の閾値以上に変化する教示点を算出する算出手段と、
前記算出手段により算出された教示点の直後の補間点から前記主軌道の進行方向に配置される所定数の補間点について、各補間点の前記変位位置を、前記教示点の直前の補間点の変位位置から前記教示点の直後の補間点の変位位置に向かうベクトルを縮小したベクトルで逆方向に変化させた位置に補正する位置補正手段と、
を備えたことを特徴とする溶接ロボット制御装置。
【請求項４】
前記ウィービング動作における振幅の変化割合が増加するのに応じて前記位置補正手段により変位位置が補正される補間点の数を増加させる補正数変更手段を更に備える、請求項３に記載の溶接ロボット制御装置。
【請求項５】
前記位置補正手段は、下記演算式（１）により前記所定数の補間点の各補間点の前記変位位置を補正することを特徴とする、請求項１〜４のいずれかに記載の溶接ロボット制御装置。
【数１】
0004842656.tif 000012
但し、Ｐｗ(m)’：補正後の変位位置
Ｐｗ(m)  ：補正前の変位位置
ｄ’：主軌道の進行方向又はウィービング振幅が変化する教示点の直前の補間点の変位位置から前記教示点の直後の補間点の変位位置に向かうベクトル
Ｔ：主軌道の進行方向又はウィービング振幅が変化する教示点の直前の補間点から変位位置が補正される複数の補間点を溶接トーチが移動するまでに要する時間
ｔ0：隣接する補間点間を溶接トーチが移動するのに要する時間
ｃ：主軌道の進行方向又はウィービング振幅が変化した直後から複数の補間点に順番に付される、ｃ・ｔ０がＴを超えない番号
【請求項６】
前記算出手段により算出された教示点の直後の補間点から前記主軌道の進行方向に配置される所定数の補間点について、各補間点における前記溶接トーチの姿勢を、下記演算式（５）により補正する姿勢補正手段を更に備えたことを特徴とする、請求項１、２、５に記載の溶接ロボット制御装置。
【数４】
0004842656.tif 000013
但し、Ｒｗ(m)’：補正後の溶接トーチの姿勢
Ｒｗ(m)  ：補正前の溶接トーチの姿勢
Ｋr：主軌道の方向が変化する前の溶接トーチの姿勢から主軌道の方向が変化した後の溶接トーチの姿勢へ変化させるための回転中心軸ベクトル
Δφ：主軌道の方向が変化する前の溶接トーチの姿勢から主軌道の方向が変化した後の溶接トーチの姿勢へ変化させるための回転角度
Ｔ：主軌道の進行方向又はウィービング振幅が変化する教示点の直前の補間点から変位位置が補正される複数の補間点を溶接トーチが移動するまでに要する時間
ｔ0：隣接する補間点間を溶接トーチが移動するのに要する時間
ｃ：主軌道の進行方向又はウィービング振幅が変化した直後から複数の補間点に順番に付される、ｃ・ｔ０がＴを超えない番号
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、ワークに対して溶接を行う溶接ロボットの制御装置に関するものである。
【背景技術】
【０００２】
従来、ワークに対して溶接を行う多関節溶接ロボットにおいては、ウィービング動作と呼称される動作を行うものがある。ウィービング動作とは、図１２に示すように、予め記憶された作業プログラムによって溶接ロボット１００の各アーム１０１の駆動モータ１０２をサーボ制御によって回転駆動させることにより、溶接トーチ１０３の先端を溶接進行方向に対して直交する方向に揺動させる動作をいう。
【０００３】
このウィービング動作では、ティーチングプレイバック方式に基づいて溶接部の形状に沿って溶接トーチ１０３が直線補間動作又は円弧補間動作を行いつつ、溶接トーチ１０３のツールセンタポイント（ＴＣＰ）１０３ａを、予め教示された振幅、周波数、及び波形に基づいて移動させる。このウィービング動作が行われることによって、良好でかつ確実な溶接を実現することができる。
【０００４】
ウィービング中の溶接トーチのＴＣＰ位置は、教示点間を補間して得た主軌道上の各補間点に対して進行方向座標系を定義し、その座標系で算出されるウィービング変位量を溶接ロボット１００の設置位置に定義される基本座標系における各補間点の座標に加算することで決定される。例えば、図１３に示すように、教示点Ｑ１，Ｑ２間をｒ個の補間点Ｐ１，Ｐ２，…Ｐｒで直線補間する場合、例えば、補間点Ｐ１における溶接トーチ１０３のＴＣＰ位置は、補間点Ｐ１に進行方向座標系（ｎ，ｏ，ａ）を定義し、例えばｏ方向が溶接面に沿う方向であるとすると、当該ｏ方向にウィービング変位量Ｈだけ移動した点Ｐｗ１がウィービング中の溶接トーチ１０３のＴＣＰ位置になる。なお、図１３において、ｔが溶接トーチ１０３の軸方向の単位ベクトルとすると、ａはＱ１Ｑ２方向の単位ベクトル、ｏはｔとａに対して垂直方向の単位ベクトル、ｎはｏとａに対して垂直方向の単位ベクトルである。
【０００５】
ところで、図１４に示すように、教示点Ｑ２で主軌道Ｌの進行方向を大きく変化させて教示点Ｑ３の方向に溶接トーチ１０３を移動させる場合、教示点Ｑ２Ｑ３間も教示点Ｑ１Ｑ２間と同様に補間点Ｐ１’，Ｐ２’，…Ｐｍ’で直線補間して各補間点Ｐ１’〜Ｐｍ’でウィービング変位量を演算すると、補間点Ｐ１’の進行方向座標系のｏ’方向が補間点Ｐｒの進行方向座標系のｏ方向に対して大きく変化し、溶接トーチ１０３のＴＣＰ位置が大きく変化することになる。
【０００６】
すなわち、溶接トーチ１０３のウィービング動作は、教示点Ｑ１Ｑ２間では、教示点Ｑ２を通る主軌道Ｌ１に垂直な直線ｎ１より教示点Ｑ１側の領域で行われ、教示点Ｑ２Ｑ３間では、教示点Ｑ２を通る主軌道Ｌ２に垂直な直線ｎ２より教示点Ｑ３側の領域で行われるから、補間点ＰｒにおけるＴＣＰ位置Ｐｗｒから補間点Ｐ１’におけるＴＣＰ位置Ｐｗ１’に向かうベクトルｄ’は、直線ｎ１と直線ｎ２とで挟まれる、斜線で示す領域Ａを跨ぐことになり、補間点Ｐｒまでの補間点間を移動する溶接トーチ１０３のベクトルｄに対して、大きく変化することになる（図１４のベクトルｄとベクトルｄ’を参照）。
【０００７】
このため、溶接トーチ１０３を、教示点Ｑ１から教示点Ｑ２を経由して教示点Ｑ３にユーザが予め設定したウィービング条件（周波数や振幅）でウィービング動作をさせながら移動させると、溶接トーチ１０３は補間点ＰｒのＴＣＰ位置Ｐｗｒから補間点Ｐ１’のＴＣＰ位置Ｐｗ１’に移動するときに、それまでの移動速度よりも高速で移動しなけばならず、溶接トーチ１０３の移動速度が急増する現象が生じる。この現象を「溶接トーチの飛び」という。
【０００８】
特に姿勢の変化を伴うウィービングの場合、姿勢変化が進行方向座標系に対して定義されているため、主軌道の進行方向が変化することによって溶接トーチの飛びが起きると、補間点ＰｒのＴＣＰ位置Ｐｗｒでの姿勢Ｒｗｒに対して補間点Ｐ１' のＴＣＰ位置Ｐｗ１'での姿勢Ｒｗ１'は進行方向の変化分だけ変化させなければならない。このために、各アーム１０１のサーボ制御に異常が発生し、作業が中断することになる。また、サーボ制御に異常が発生しなくても、主軌道Ｌ１，Ｌ２が急変する教示点Ｑ２の付近における溶接トーチ１０３のウィービング動作が不連続になることに起因してビード形状が悪くなり、溶接品質が悪化する。
【０００９】
従来、この溶接トーチの飛びを避ける方法として、教示点Ｑ１Ｑ２間の主軌道Ｌ１の終端点Ｑ２におけるウィービング変位量を０にするとともに、教示点Ｑ２Ｑ３間の主軌道Ｌ２の開始点Ｑ２におけるウィービング変位量を０にすることにより、主軌道の進行方向が変化する点Ｑ２において、溶接トーチ１０３のＴＣＰ位置を一致させる方法が提案されている。
【００１０】
例えば、特開平５−５７６４２号公報にはウィービング周波数を変更することで、主軌道の変化点でのウィービング変位量を０にするよう調整する方法が提案されている。また、特開平６−８７０７６号公報にはウィービング周期が主軌道の変化点で終了するように溶接速度を変化して、当該主軌道の変化点でのウィービング変位量を０にするよう調整する方法が提案されている。
【００１１】
【特許文献１】特開平５−５７６４２号公報
【特許文献２】特開平６−８７０７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記従来の方法では、主軌道の変化点でのウィービング変位量を０にするために、例えば、図１４の例では、教示点Ｑ１Ｑ２間におけるウィービング周波数若しくは溶接速度が教示点Ｑ２Ｑ３間におけるウィービング周波数若しくは溶接速度と異なることになる。このことは、教示点Ｑ１から教示点Ｑ３まで溶接トーチ１０３を移動させて一連の溶接処理をする上で、教示点Ｑ１Ｑ２間と教示点Ｑ２Ｑ３間とで溶接条件が変化することになるから、ビードの不均一の要因となり、溶接品質上問題となる。そして、この問題は、溶接トーチ１０３の主軌道の進行方向の変化数が多い溶接区間（溶接開始点から溶接終了点までの区間、図１４の例では、教示点Ｑ１から教示点Ｑ３までの区間）ほど、大きくなる。
【００１３】
従って、ウィービング周波数若しくは溶接速度を変化させることなく、しかも、主軌道の進行方向の変化点における溶接トーチの飛びを可及的に抑制しつつ、溶接トーチをウィービング動作させながら溶接区間を移動させる方法が望まれるが、従来、このような方法は提案されていない。
【００１４】
本願発明は、上記した事情のもとで考え出されたものであって、主軌道の進行方向が大きく変化する場合でも、ユーザの教示どおりのウィービング周波数と溶接速度を維持したまま、溶接トーチの飛びを可及的に抑制して、ウィービング波形を連続させて溶接作業を行うように制御できる溶接ロボット制御装置を提供することをその課題としている。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本願発明では、次の技術的手段を講じている。
【００１６】
本願発明の第１の側面によって提供される溶接ロボット制御装置は、多関節溶接ロボットのアーム先端に設けられた溶接トーチの移動経路として教示された複数の教示点を連結して構成され、前記溶接トーチの進行方向が途中で変化する主軌道上に、多数の補間点を設け、各補間点に前記主軌道に対して直交する方向の所定の変位量を設定し、前記溶接トーチを各補間点の変位位置に従って移動させることにより、当該溶接トーチを前記主軌道上でウィービング動作をさせながら移動させる溶接ロボット制御装置であって、隣接する教示点間から前記主軌道の進行方向を演算し、その進行方向が所定の角度以上に変化する教示点を算出する算出手段と、前記算出手段により算出された教示点の直後の補間点から前記主軌道の進行方向に配置される所定数の補間点について、各補間点の前記変位位置を、前記教示点の直前の補間点の変位位置から前記教示点の直後の補間点の変位位置に向かうベクトルを縮小したベクトルで逆方向に変化させた位置に補正する位置補正手段とを備えたことを特徴とする（請求項１）。
【００１７】
このような構成によれば、溶接の主軌道の進行方向が大きく変化する場合、進行方向変化後の一定期間、本来の溶接点の位置を位置補正手段で補正することにより、補正された溶接点が滑らかにつながり、ウィービング周波数や溶接速度を維持したまま、溶接トーチの飛びが発生しないようにウィービング波形を連続させて溶接作業を行うことができる。
【００１８】
また、請求項１に記載の溶接ロボット制御装置において、前記主軌道の進行方向の変化する角度が増加するのに応じて前記位置補正手段により変位位置が補正される補間点の数を増加させる補正数変更手段を更に備えるとよい（請求項２）。
【００１９】
このような構成によれば、主軌道方向の変化角度が大きいほど溶接トーチの飛びが大きくなるので、溶接点の補正を行う期間をより長く設定することで、補正後の溶接点がより滑らかにつながることになる。
【００２０】
本願発明の第２の側面によって提供される溶接ロボット制御装置は、多関節溶接ロボットのアーム先端に設けられた溶接トーチの移動経路として教示された複数の教示点を連結して構成された主軌道上に多数の補間点を設け、各補間点に前記主軌道に対して直交する方向の所定の変位量を設定し、前記溶接トーチを各補間点の変位位置に従って移動させることにより、当該溶接トーチを前記主軌道上でウィービング動作をさせながら移動させる溶接ロボット制御装置であって、前記教示点間毎の前記ウィービング動作における振幅のデータを記憶する記憶手段と、前記記憶手段に記憶された振幅のデータに基づいて、前記振幅のデータが所定の閾値以上に変化する教示点を算出する算出手段と、前記算出手段により算出された教示点の直後の補間点から前記主軌道の進行方向に配置される所定数の補間点について、各補間点の前記変位位置を、前記教示点の直前の補間点の変位位置から前記教示点の直後の補間点の変位位置に向かうベクトルを縮小したベクトルで逆方向に変化させた位置に補正する位置補正手段とを備えたことを特徴とする（請求項３）。
【００２１】
このような構成によれば、ウィービングの振幅が大きく変化する場合、ウィービング振幅変化後の一定期間、本来の溶接点の位置を位置補正手段で補正することにより、補正された溶接点が滑らかにつながり、ウィービング周波数や溶接速度を維持したまま、飛びが発生しないようにウィービング波形を連続させて溶接作業を行うことができる。
【００２２】
また、請求項３に記載の溶接ロボット制御装置において、前記ウィービング動作における振幅の変化割合が増加するのに応じて前記位置補正手段により変位位置が補正される補間点の数を増加させる補正数変更手段を更に備えるとよい（請求項４）。
【００２３】
このような構成によれば、ウィービング振幅の変化割合が大きいほど溶接トーチの飛びが大きくなるので、溶接点の補正を行う期間をより長く設定することで、補正後の溶接点がより滑らかにつながることになる。
【００２４】
また、請求項１ないし４に記載の溶接ロボット制御装置において、前記位置補正手段は、下記演算式（１）により前記所定数の補間点の各補間点の前記変位位置を補正するとよい（請求項５）。
【数１】
0004842656.tif 000002
但し、Ｐｗ(m)’：補正後の変位位置
Ｐｗ(m)  ：補正前の変位位置
ｄ’：主軌道の進行方向又はウィービング振幅が変化する教示点の直前の補間点の変位位置から前記教示点の直後の補間点の変位位置に向かうベクトル
Ｔ：主軌道の進行方向又はウィービング振幅が変化する教示点の直前の補間点から変位位置が補正される複数の補間点を溶接トーチが移動するまでに要する時間
ｔ0：隣接する補間点間を溶接トーチが移動するのに要する時間
ｃ：主軌道の進行方向又はウィービング振幅が変化した直後から複数の補間点に順番に付される、ｃ・ｔ０がＴを超えない番号
【００２５】
また、請求項１、２、５に記載の溶接ロボット制御装置において、前記算出手段により算出された教示点の直後の補間点から前記主軌道の進行方向に配置される所定数の補間点について、各補間点における前記溶接トーチの姿勢を、下記演算式（５）により補正する姿勢補正手段を更に備えるとよい（請求項６）。
【数４】
0004842656.tif 000003
但し、Ｒｗ(m)’：補正後の溶接トーチの姿勢
Ｒｗ(m)  ：補正前の溶接トーチの姿勢
Ｋr：主軌道の方向が変化する前の溶接トーチの姿勢から主軌道の方向が変化した後の溶接トーチの姿勢へ変化させるための回転中心軸ベクトル
Δφ：主軌道の方向が変化する前の溶接トーチの姿勢から主軌道の方向が変化
した後の溶接トーチの姿勢へ変化させるための回転角度
Ｔ：主軌道の進行方向又はウィービング振幅が変化する教示点の直前の補間点から変位位置が補正される複数の補間点を溶接トーチが移動するまでに要する時間
ｔ0：隣接する補間点間を溶接トーチが移動するのに要する時間
ｃ：主軌道の進行方向又はウィービング振幅が変化した直後から複数の補間点に順番に付される、ｃ・ｔ０がＴを超えない番号
【００２６】
このような構成によれば、溶接の主軌道の進行方向が大きく変化する場合、進行方向変化後の一定期間、本来の溶接トーチの姿勢を姿勢補正手段で補正することにより、補正された溶接トーチの姿勢が滑らかに変化し、飛びが発生しないようにウィービング波形を連続させて溶接作業を行うことができる。
【００２７】
本願発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【発明を実施するための最良の形態】
【００２８】
以下、本願発明の好ましい実施の形態を、図面を参照して具体的に説明する。
【００２９】
まず、本願発明に係る溶接ロボット制御装置のウィービング動作における溶接トーチの飛びの抑制方法について、図１，図２、図３を用いて説明する。
【００３０】
図１は、教示点Ｑ１Ｑ３間を直線補間した各補間点Ｐ(m)（ｍ＝１，２，…Ｍ）の座標に、各補間点Ｐ(m)に定義された進行方向座標系で算出されるウィービング変位量Ｈを加算して決定される溶接トーチのＴＣＰ位置Ｐｗ(m)（ｍ＝１，２，…Ｍ）の一例を示したもので、特に、中間点Ｑ２付近のウィービング周期１．５周期分の溶接トーチのＴＣＰ位置を示したものである。
【００３１】
また、図２は、図１において、教示点Ｑ２で溶接トーチの主軌道Ｌを９０度上方に屈曲させたときのウィービング周期１．５周期分の溶接トーチのＴＣＰ位置の変化を示したものである。なお、溶接トーチのＴＣＰ位置の変化を分かり易くするために、図２では、極端に屈曲した場合の例として、主軌道Ｌが９０度屈曲した場合を描いている。
【００３２】
図１では、教示点Ｑ１Ｑ３間の溶接トーチの主軌道Ｌは直線であるから、各補間点Ｐ(m)における進行方向座標系は同一である。従って、溶接トーチはほぼ正弦波状にＴＣＰ
位置Ｐｗ(m)を変位させながら主軌道Ｌ上を移動することになる。
【００３３】
なお、補間点Ｐ(1)，Ｐ(7)，Ｐ(13)，Ｐ(19)のウィービング変位量は０のため、これらの補間点Ｐ(1)，Ｐ(7)，１Ｐ(13)，Ｐ(19)の溶接トーチのＴＣＰ位置は、主軌道Ｌ上に位置している。また、補間点Ｐ(7)〜Ｐ(19)の区間はウィービング周期１周期分の主軌道Ｌの距離に相当し、補間点Ｐ(７)〜Ｐ(10)，Ｐ(10)〜Ｐ(13)，Ｐ(13)〜Ｐ(16)，Ｐ(16)〜Ｐ(19)の各区間はウィービング周期１／４周期分の主軌道Ｌの距離に相当している。
【００３４】
また、図２において、Ｐｗ(1)，Ｐｗ(2)，…，Ｐｗ(19)も各補間点Ｐ(1)〜Ｐ(19)のウィービング動作における溶接トーチのＴＣＰ位置であるが、教示点Ｑ２で主軌道Ｌの進行方向が上方に屈曲し、これに伴い補間点Ｐ(11)，…，Ｐ(19)における進行方向座標系が補間点Ｐ(1)，…，Ｐ(10)における進行方向座標系に対して９０度変化するので、補間点Ｐ(11)，Ｐ(12)，…，Ｐ(19)におけるＴＣＰ位置は図１とは異なる位置になっている。
【００３５】
また、図２において、Ｐｗ(11)’，Ｐｗ(12)’は、補間点Ｐ(11)，Ｐ(12)に対する溶接トーチのＴＣＰ位置を補正した位置を示している。背景技術の欄で説明したように、教示点Ｑ２で主軌道Ｌの進行方向を大きく屈曲させると、教示点Ｑ２より後の補間点Ｐ(11)に対する溶接トーチのＴＣＰ位置は大きく変化し、これにより補間点Ｐ(10)における溶接トーチのＴＣＰ位置Ｐｗ(10)から補間点Ｐ(11) における溶接トーチのＴＣＰ位置Ｐｗ(11)に移動する際の溶接トーチの移動ベクトルはｄ（図１参照）からｄ’（図２参照）に急変し、溶接トーチの飛びが発生することになる。
【００３６】
溶接トーチの移動ベクトルが急変するのは、主軌道Ｌの進行方向が屈曲する直前の補間点（図２では、補間点Ｐ(10)）から溶接トーチの主軌道Ｌの進行方向が屈曲した直後の補間点（図２では、補間点Ｐ(11)）に移動するときである。本実施形態では、その後の溶接トーチの移動を滑らかにするため、溶接トーチの主軌道の進行方向が屈曲した直後からウィービング周期の１／４周期に相当する距離に存在する補間点のＴＣＰ位置を補正するようにしている。
【００３７】
なお、教示点Ｑ１〜Ｑ３及び各補間点Ｐ(m)の座標は、溶接ロボットの設置位置に定義される基本座標系で決定されるものであり、各補間点Ｐ(m)に対するＴＣＰ位置Ｐｗ(m)の座標は基本座標系に変換することにより決定されることになるが、溶接ロボットの制御は各アームの回転位置を制御することによって行われるので、溶接ロボットの制御データとしては、基本座標系におけるＴＣＰ位置Ｐｗ(m)の座標のデータではなく、各補間点Ｐ(m)に対するＴＣＰ位置Ｐｗ(m)に溶接トーチの先端を移動させるための各アームの回転位置のデータが算出されることになる。
【００３８】
ここでは、溶接トーチの飛びの抑制方法の原理を説明するので、以下では、便宜上、各補間点Ｐ(m)に対するＴＣＰ位置Ｐｗ(m)の座標を用いて説明することにする。
【００３９】
本願発明に係るウィービング動作における飛びの抑制方法では、溶接トーチの主軌道Ｌの進行方向が屈曲した直前の補間点からウィービング周期の１／４周期に相当する距離に存在する補間点（図２の例では、補間点Ｐ(11)，Ｐ(12)，Ｐ(13)）に対するＴＣＰ位置を下記演算式（１）によって補正し、溶接トーチの飛びが発生した部分での各補間点間の溶接トーチの移動距離を短くする。
【００４０】
【数１】
0004842656.tif 000004
【００４１】
なお、（１）式において、Ｐｗ(m)、Ｐｗ(m)’は、それぞれ補間点Ｐ(m)のウィービング変位量加算後のＴＣＰ位置の補正前と補正後の座標である。ｄ’は、主軌道の方向が変化する直前の補間点Ｐ(r)のＴＣＰ位置Ｐｗ(r)から主軌道の方向が変化した直後の補間点Ｐ(r+1)のＴＣＰ位置Ｐｗ(r+1)へのベクトル（以下、「飛びベクトル」という）であり、図２の例ではｄ’＝Ｐｗ(11)−Ｐｗ(10)となる。
【００４２】
また、Ｔは、ＴＣＰ位置の補正が行われる複数の補間点を含む主軌道の区間を溶接トーチが移動する時間であり、図２の例では、ウィービング周期τの１／４の区間を溶接トーチが移動する時間としている。また、ｔ0は、主軌道の補間点間を移動する溶接トーチの移動時間であり、ｃは、ｃ・ｔ０がＴを超えないｔ0のカウント数である。ｃは、主軌道の方向が変化する直前の補間点Ｐ(r)からカウントが開始されるので、ｔ0，２・ｔ0，３・ｔ0，…は、それぞれ補間点Ｐ(r+1)，Ｐ(r+2)，Ｐ(r+3)，…に対応することになる。
【００４３】
図２の例では、ウィービング周期τが１２・ｔ0で、Ｔ＝１２・ｔ0／４＝３・ｔ0であるから、補間点Ｐ(10)からｃのカウントが開始されると、補間点Ｐ(11)からＰ(13)までのＴＣＰ位置が補正されることになる。
【００４４】
（１）式により、補間点Ｐ(11)，Ｐ(12) ，Ｐ(13)のＴＣＰ位置Ｐｗ(11)，Ｐｗ(12)，Ｐｗ(13)は、それぞれ、Ｐｗ(11)’，Ｐｗ(12)’，Ｐｗ(13)’に補正される。尤も、補間点Ｐ(13)のＴＣＰ位置Ｐｗ(13)は、ｃ＝３でＴ＝３・ｔ0なので、ＴＣＰ位置Ｐｗ(13)’＝Ｐｗ(13)となり、実質的に補正されないことになる。
【００４５】
【数２】
0004842656.tif 000005
【００４６】
なお、（２）式で算出されるＴＣＰ位置Ｐｗ(11)’は、ＴＣＰ位置Ｐｗ(11)に−（２／３）・ｄ’のベクトルを加算した位置であるから、図２に示すように、ＴＣＰ位置Ｐｗ(10)とＴＣＰ位置Ｐｗ(11)を結ぶ線分を１：２で内分した位置となる。
【００４７】
また、（３）式で算出されるＴＣＰ位置Ｐｗ(12)’は、ＴＣＰ位置Ｐｗ(12)に−（１／３）・ｄ’のベクトルを加算した位置であるから、図２に示すように、ＴＣＰ位置Ｐｗ(12)を通るＴＣＰ位置Ｐｗ(10)とＴＣＰ位置Ｐｗ(11)を結ぶ線分と平行な直線上であって、ＴＣＰ位置Ｐｗ(12)から｜ｄ’｜／３だけＴＣＰ位置Ｐｗ(10)側に寄った位置である。
【００４８】
なお、図２の例では、ｃ＝３であったが、一般に、ｃ・ｔ０＜τ／４を満たすｃの最大値をＣとすると、主軌道の方向が変化した直後の補間点Ｐ(r+1)からＣ個の補間点Ｐ(r+Ｃ)についてＴＣＰ位置が補正されるとすると、各ＴＣＰ位置Ｐｗ(r+1)，Ｐｗ(r+2)，…，Ｐｗ(r+Ｃ)は、それぞれ、Ｐｗ(r+1)’，Ｐｗ(r+2) ’，…，Ｐｗ(r+C)’に補正される。なお、ｄ’は、補間点Ｐ(r)のＴＣＰ位置Ｐｗ(r)から補間点Ｐ(r+1)のＴＣＰ位置Ｐｗ(r+1)に向かうベクトルである。
【００４９】
【数３】
0004842656.tif 000006
【００５０】
これにより、ＴＣＰ位置Ｐｗ(r+1)'，ＴＣＰ位置Ｐｗ(r+2)'，…，Ｐｗ(r+C)'は、ＴＣＰ位置Ｐｗ(r)側に寄ることになり、これらのＴＣＰ位置Ｐｗ(r)，Ｐｗ(r+1)'，Ｐｗ(r+2)'，…，Ｐｗ(r+C)'は滑らかに連続し、各ＴＣＰ位置の間隔が大きく離れないものに補正される。
【００５１】
なお、「背景技術」の欄で説明したように、ウィービングが姿勢の変化を伴う場合、溶接トーチの飛びとともにそれに応じて溶接トーチの姿勢も大きく変わるから、この溶接トーチの姿勢についても、溶接トーチのＴＣＰ位置の補正と同様の考え方による下記（５）式で補正することにより、溶接トーチの姿勢の急変を抑制することができる。
【００５２】
【数４】
0004842656.tif 000007
【００５３】
なお、（５）式において、Ｒｗ(m)、Ｒｗ(m)’は、それぞれ溶接トーチの補正前と補正後の姿勢をあらわす回転行列である。Ｋｒ、Δφは、それぞれ主軌道の方向が変化する
前の溶接トーチの姿勢から主軌道の方向が変化した後の溶接トーチの姿勢への回転中心軸ベクトルと回転角度（以下、「飛び回転角度」という。）である。すなわち、主軌道の方向が変化する前の溶接トーチの姿勢Ｒｗ(m-1）をＫｒベクトル周りにΔφ回転させると主
軌道の方向が変化した後の溶接トーチの姿勢Ｒｗ(m)となる。Ｋｒ、Δφは次式より算出
される。
【００５４】
【数５】
0004842656.tif 000008
【００５５】
なお、姿勢の変化を伴わないウィービングの場合、ウィービング変位量加算後の姿勢は主軌道の姿勢と同じであるため、主軌道の方向が変化する前の溶接トーチの姿勢Ｒｗ(m-1）と主軌道の方向が変化した後の溶接トーチの姿勢Ｒｗ(m)はともに両者の間にある教示点姿勢とほぼ同じである。よって、溶接トーチの姿勢は急変しない。
【００５６】
図３は、図２の例での補間点Ｐ(11) のＴＣＰ位置Ｐｗ(11)における溶接トーチの姿勢の補正を表す図である。（６）式により、ＴＣＰ位置Ｐｗ(11) における溶接トーチの姿勢Ｒｗ(11)はＲｗ(11)’に補正される。補正後の溶接トーチの姿勢Ｒｗ(11)’は、補正前の溶接トーチの姿勢Ｒｗ(11)をＫｒベクトル周りにΔφ’＝(１／３) Δφだけ逆方向に
回転させて得られる。
【００５７】
【数６】
0004842656.tif 000009
【００５８】
また、（５）式によれば、溶接トーチの姿勢については、ＴＣＰ位置Ｐｗ(r+1)，Ｐｗ(r+2)，…，Ｐｗ(r+C)がそれぞれＰｗ(r+1)’,Ｐｗ(r+2)’,…,Ｐｗ(r+C)’に補正されるのに応じて、各ＴＣＰ位置Ｐｗ(r+1)’,Ｐｗ(r+2)’,…,Ｐｗ(r+C)’における溶接トーチの姿勢を示す回転行列は、それぞれ、下記のように補正されることになる。
【００５９】
【数７】
0004842656.tif 000010
【００６０】
これにより、各ＴＣＰ位置Ｐｗ(r+1)'，ＴＣＰ位置Ｐｗ(r+2)'，…，Ｐｗ(r+C)'で溶接トーチの姿勢を少しずつ変更させることができる。
【００６１】
図４は、本願発明に係る溶接ロボット制御装置が適用される溶接ロボット制御システムを示す構成図である。この溶接ロボット制御システムでは、溶接ロボットに設けられた溶接トーチによってワーク（被溶接物）に対して溶接が行われる。
【００６２】
溶接ロボット制御システムは、溶接ロボット１０と、溶接ロボット制御装置２０と、溶接電源装置３０とによって大略構成されている。
【００６３】
溶接ロボット１０は、ワークＷに対して例えばアーク溶接を自動で行うものである。溶接ロボット１０は、フロア等の適当な箇所に固定されるベース部材１１と、それに複数の軸を介して連結された複数のアーム１２と、複数のアーム１２の両端又は片端に設けられた複数の駆動モータ（サーボモータ）１３（一部図示略）とによって構成されている。
【００６４】
溶接ロボット１０には、最も先端側に設けられたアーム１２の先端部に、溶接トーチ１４が設けられている。溶接トーチ１４は、溶加材としての例えば直径１ｍｍ程度の溶接ワイヤ１５をワークＷの所定の溶接位置に導くものである。
【００６５】
溶接ロボット１０の上部には、ワイヤ送給装置１６が設けられている。ワイヤ送給装置１６は、溶接トーチ１４に対して溶接ワイヤ１５を送り出すためのものである。ワイヤ送給装置１６は、溶接ワイヤ１５が巻回された図示しないリールと、リールを回転させる送給モータ１７とによって構成され、送給モータ１７は、溶接電源装置３０によって回転駆動される。
【００６６】
ワイヤ送給装置１６には、溶接ワイヤ１５を案内するためのコイルライナ１９が接続され、コイルライナ１９の先端は、溶接トーチ１４に接続されている。これにより、ワイヤ送給装置１６によって送り出された溶接ワイヤ１５は、コイルライナ１９を介して溶接トーチ１４に導かれる。溶接ワイヤ１５は、溶接トーチ１４から外部に突出して消耗電極として機能する。すなわち、溶接電源装置３０によって溶接ワイヤ１５の先端とワークＷとの間に高電圧を印加してアークを発生させ、そのアークの熱で溶接ワイヤ１５を溶融させることにより、ワークＷに対して溶接が施される。
【００６７】
各アーム１２に設けられた駆動モータ１３は、溶接ロボット制御装置２０からの駆動信号によって回転駆動され、この各駆動モータ１３が回転駆動されることにより、各アーム１２が変位し、結果的に溶接トーチ１４が上下前後左右に移動可能とされる。
【００６８】
さらに、本実施形態では、各駆動モータ１３が回転駆動されることにより、溶接トーチ１４のウィービング動作が行われる。ウィービング動作とは、上述したように、溶接トーチ１４を溶接進行方向に対して直交する方向に揺動させる動作をいう。本実施形態に係る溶接ロボット１０は、図４に示すように、複数の関節を有する多関節の溶接ロボットであり、これら複数の関節を複合動作させることにより、溶接トーチ１４が溶接進行方向に対して直交方向に揺動されるように制御される（図１２の正弦波状の軌跡を参照）。
【００６９】
なお、各駆動モータ１３には、図示しないエンコーダが設けられている。エンコーダの出力は、溶接ロボット制御装置２０に入力され、溶接ロボット制御装置２０では、エンコーダの出力によって溶接トーチ１４の現在位置を認識するようになっている。
【００７０】
溶接ロボット制御装置２０は、溶接ロボット１０の動作を制御するためのものである。溶接ロボット制御装置２０は、予め記憶されている制御ソフトウェア及び図示しないエンコーダからの現在位置情報等に基づいて、溶接ロボット１０の各駆動モータ１３の駆動を制御して、溶接トーチ１４をワークＷの所定の溶接点に移動させる。また、溶接ロボット制御装置２０は、各駆動モータ１３の駆動を制御して、溶接トーチ１４を揺動させることにより、上記ウィービング動作を実行する。
【００７１】
溶接電源装置３０は、図示しない溶接電源を備えており、溶接電源は溶接トーチ１４とワークＷとの間に高電圧の溶接電圧を供給するものである。また、溶接電源装置３０は、所定のタイミングでワイヤ送給装置１６の送給モータ１７を駆動させる機能をも有している。
【００７２】
図５は、溶接ロボット制御装置２０の内部構成及びその周辺装置を示すブロック図である。溶接ロボット制御装置２０は、ＣＰＵ２１、ＲＡＭ２２、ＲＯＭ２３、タイマ（ＴＩＭＥＲ）２４、ハードディスク２５、ティーチングペンダントＩ／Ｆ２６、操作ボックスＩ／Ｆ２７、及びサーボドライバＩ／Ｆ２８を備えており、各部はバス（ＢＵＳ）３１によって相互に接続されている。
【００７３】
ティーチングペンダントＩ／Ｆ２６には、ティーチングペンダント３３が接続され、操作ボックスＩ／Ｆ２７には、操作ボックス３４が接続されている。また、サーボドライバＩ／Ｆ２８には、溶接ロボット制御装置２０の内部に設けられた６つのサーボドライバ３５が接続され、サーボドライバ３５には、溶接ロボット１０に設けられた６つの駆動モータ１３がそれぞれ接続されている。
【００７４】
ＣＰＵ２１は、本溶接ロボット制御装置２０の制御中枢となるものであり、教示された作業プログラム、ティーチングペンダント３３や操作ボックス３４からの操作信号、あるいは図示しないエンコーダからの現在位置情報等に基づいて、所定のデータ処理を行い、バス３１及びサーボドライバＩ／Ｆ２８を介してサーボドライバ３５に動作指令を与える。これにより、駆動モータ１３が回転駆動され、溶接トーチ１４が移動される。
【００７５】
ＲＡＭ２２は、ＣＰＵ２１に対して作業領域を提供するものであり、計算データ等を一時的に記憶する。ＲＡＭ２２は、例えば後述する動作命令バッファ４１、軌道バッファ４２、補間点バッファ４３、又は関節角度バッファ４４として機能する。
【００７６】
ＲＯＭ２３は、溶接ロボット１０の動作を制御するための制御ソフトウェアを格納するものである。
【００７７】
ハードディスク２５は、溶接ロボット１０の溶接作業が教示された作業プログラム、この作業プログラムの実行条件を示すデータ、制御定数を示すデータ等を格納するものである。
【００７８】
タイマ２４は、予め定められた定期時刻ごとに同期信号をＣＰＵ２１に対して発生するものである。同期信号は、ＣＰＵ２１がサーボドライバ３５に対して動作指令信号を出力する際の更新タイミングとして用いられる。
【００７９】
ティーチングペンダントＩ／Ｆ２６は、ティーチングペンダント３３とのインターフェースを司るものである。ティーチングペンダント３３は、例えば表示装置３３ａとキーボード３３ｂとを有し、溶接ロボット１０の動作を手動で行う際にユーザによって操作されるものである。ＣＰＵ２１は、このティーチングペンダント３３からの操作信号を受け取ることにより所定のデータ処理を行うとともに、ティーチングペンダント３３に対して表示データを送ることにより、操作情報を表示させる。
【００８０】
操作ボックスＩ／Ｆ２７は、操作ボックス３４とのインターフェースを司るものである。操作ボックス３４は、自動運転モード又は手動モードの選択、起動、開始、停止等の各種操作をユーザによって可能にするものである。ＣＰＵ２１は、この操作ボックス３４からの操作信号を受け取ることにより所定のデータ処理を行う。
【００８１】
サーボドライバＩ／Ｆ２８は、サーボドライバ３５とのインターフェースを司るものである。サーボドライバ３５は、ＣＰＵ２１からの動作指令信号に基づいて、６つの駆動モータ１３をそれぞれ駆動制御するものである。
【００８２】
図６は、サーボドライバ３５によるサーボ制御の概念を示すブロック図である。この図によると、溶接ロボット１０の各関節における位置指令は、位置制御ブロック５１に入力され、位置制御ブロック５１の出力は、速度制御ブロック５２に入力される。速度制御ブロック５２の出力は、電流制御ブロック５３に入力され、電流制御ブロック５３の出力は、駆動モータ１３に入力される。駆動モータ１３の出力は、例えば減速器からなる減速機構のばね要素ブロック５４を介して、負荷としてのアーム１２に与えられる。
【００８３】
駆動モータ１３には、電流検出ブロック５５が接続され、電流検出ブロック５５において駆動モータ１３に流れる電流が検出され、その値は電流制御ブロック５３にフィードバックされる。また、駆動モータ１３には、エンコーダ５６が接続され、エンコーダ５６によって現在の回転速度（アームの移動速度に対応）のデータが取得され、その回転速度データは、位置制御ブロック５１と速度制御ブロック５２にフィードバックされる。
【００８４】
位置制御ブロック５１では、フィードバックされた回転速度データが積分ブロック５７によって積分されることにより位置データに変換されて減算器６１に入力され、この減算器６１により位置指令（関節角度）に対する現在の位置（関節角度）の誤差データが演算される。この誤差データは増幅器５８により所定のゲインＫｐｐ（以下、位置フィードバックゲインという。）でレベル補正が行なわれた後、加算器６２に入力される。
【００８５】
また、位置制御ブロック５１では、溶接ロボット１０の各関節における位置指令のデータは、微分ブロック５９によって微分されることにより速度データに変換され、さらに増幅器６０により所定のゲインＫｆｆ（以下、速度フィードフォワードゲインという。）でレベル補正が行なわれた後、加算器６２に入力される。加算器６２では速度フィードフォワードゲインＫｆｆから出力される速度データと、位置フィードバックゲインＫｐｐから出力される誤差データとが加算されて、上述した速度制御ブロック５２に出力される。
【００８６】
このように、溶接ロボット１０の各関節における位置指令に対して駆動モータ１３の動作をフィードバック制御させることにより、予め教示された作業プログラムの再生動作をより正確に行うことができる。
【００８７】
図７は、ＣＰＵ２１及びＲＡＭ２２の実際的な機能をブロックにして表した場合の構成図である。
【００８８】
ＣＰＵ２１の機能としては、動作命令読出部３６、軌道生成部３７、補間点生成部３８、関節角度生成部３９、及びサーボ出力部４０によって表され、ＲＡＭ２２の機能としては、動作命令バッファ４１、軌道バッファ４２、補間点バッファ４３、及び関節角度バッファ４４によって表される。なお、各バッファ４１〜４４は、ＦＩＦＯ（first-in first-out）バッファとして構成されており、先入れ及び先出しでデータが処理される。
【００８９】
動作命令読出部３６は、ハードディスク２５に記憶された作業プログラムから、溶接ロボット１０の動作命令に関する情報（例えば座標、速度情報等のデータからなる軌道命令）を読み出し、動作命令バッファ４１に格納する。
【００９０】
軌道生成部３７は、動作命令バッファ４１から動作命令に関する情報（動作命令コマンド）を読み出し、それに基づいて溶接ロボット１０の溶接トーチ１４の作業軌道を三次元空間の直交座標上で計画する。軌道生成部３７は、計画された軌道データを軌道バッファ４２に格納する。
【００９１】
補間点生成部３８は、軌道バッファ４２から軌道データを読み出し、その軌道データを、「補間周期」と呼称される所定時間毎に分割する。そして、補間周期毎に直交座標によって表される、溶接トーチ１４が到達すべき位置、姿勢を示す補間点データを算出する。すなわち、軌道データは、溶接開始点から溶接終了点に至る溶接トーチ１４の移動軌跡を複数の教示点によって表すとともに、教示点間の溶接トーチ１４の移動方法を直線移動や円弧移動によって定義したものである。補間点生成部３８は、隣接する教示点間において溶接トーチ１４が通過すべき点とその点における溶接トーチ１４の姿勢等のデータを補間周期毎に補間している。補間点生成部３８は、算出した補間点データを補間点バッファ４３に格納する。
【００９２】
関節角度生成部３９は、補間点バッファ４３から溶接トーチ１４の到達位置、姿勢を示す補間点データを読み出し、溶接ロボット１０の各関節における関節角度を示すデータに逆変換する演算を行い、算出した関節角度データを関節角度バッファ４４に格納する。なお、本実施形態の特徴であるウィービング動作時の飛び補正は、主にこの関節角度生成部３９において実現されるようになっている。これについては後述する。
【００９３】
関節角度バッファ４４に格納された、溶接ロボット１０の関節角度データは、タイマ２４によって発生される同期信号ＳＹＮＣに同期してサーボ出力部４０に通知される。そして、上記関節角度データは、サーボ出力部４０から所定のタイミングでサーボドライバＩ／Ｆ２８を介してサーボドライバ３５へ各関節の位置指令（駆動モータ１３に対する動作指令）として出力される。
【００９４】
図８は、関節角度生成部３９の機能を更に細かくブロックにして表した場合の構成図である。
【００９５】
関節角度生成部３９は更に、ウィービングデータ読出部３９１、ウィービング変位量算出部３９２、ＴＣＰ位置姿勢算出部３９３、方向変化検出部３９４、飛び検出部３９５、飛び補正部３９６、逆変換部３９７によってあらわされる。
【００９６】
ウィービングデータ読出部３９１は、教示作業プログラムからウィービング変位量を算出するために必要な周期、振幅、波形などからなるウィービングデータを読み出す。
【００９７】
ウィービング変位量算出部３９２は、ウィービングデータ読出部３９１が読み出したウィービングデータからウィービング変位量を算出する。
【００９８】
ＴＣＰ位置姿勢算出部３９３は、補間点バッファ４３に格納されている補間点データにウィービング変位量算出部３９２が算出したウィービング変位量を加算してＴＣＰ位置を算出する（図１３参照）。また、補間点バッファ４３に格納されている補間点データから溶接トーチの姿勢が算出される。
【００９９】
方向変化検出部３９４は、補間点バッファ４３に格納されている補間点データと軌道バッファ４２に格納されている教示点データから主軌道の方向変化があったか否かを判断し、主軌道方向変化があった場合は方向変化前後の主軌道方向の交差角を算出する。
【０１００】
飛び検出部３９５は、方向変化検出部３９４が主軌道の方向変化があったと判断した場合に、方向変化前後の主軌道方向の交差角と、ＴＣＰ位置姿勢算出部３９３が算出したＴＣＰ位置と前回のＴＣＰ位置との距離と溶接トーチの姿勢の変化とから、飛び補正が必要か否かを判断する。
【０１０１】
飛び補正部３９６は、飛び検出部３９５により飛び補正が必要と判断された場合には、ＴＣＰ位置姿勢算出部３９３が算出したＴＣＰ位置または溶接トーチの姿勢の飛び補正を行い、飛び補正が必要でないと判断された場合には、飛び補正を行わずＴＣＰ位置と溶接トーチの姿勢をそのままとする。
【０１０２】
逆変換部３９７は、飛び補正部３９６で算出されたＴＣＰ位置と溶接トーチの姿勢から溶接ロボット１０の各関節における関節角度を示すデータに逆変換する演算を行い、算出した関節角度データを関節角度バッファ４４に格納する。
【０１０３】
次に、本実施形態に係るウィービング動作における溶接トーチの飛びを抑制する制御について、図９、図１０に示すフローチャートと図２を参照して説明する。なお、上述のように、本実施形態では、溶接トーチの飛びを抑制するために、溶接トーチのＴＣＰ位置と溶接トーチの姿勢を補正しているので、以下では、両者の補正を「飛び補正」といい、両者を区別する必要がある場合は、前者を「位置飛び補正」といい、後者を「姿勢飛び補正」という。
【０１０４】
図９は関節角度生成部３９で実行される、本実施形態における特徴的なウィービング動作における溶接トーチの飛びを抑制する制御を表すフローチャートである。
【０１０５】
この制御は開始位置（補間カウンタｍ＝０、図２では教示点Ｑ１）から目標位置（図２では教示点Ｑ３）に達するまで実行され、各補間点Ｐ(1)，Ｐ(2)，…における溶接ロボット１０の各関節角度を示す関節角度データを算出する。
【０１０６】
まず、補間カウンタｍが０に初期化され、位置飛びフラグおよび姿勢飛びフラグがＯＦＦに設定される（Ｓ１）。位置飛びフラグは、位置飛び補正が必要か否かを設定するフラグで、必用な場合はＯＮにする。姿勢飛びフラグは、姿勢飛び補正が必要か否かを設定するフラグで、必用な場合はＯＮにする。
【０１０７】
次に、補間カウンタｍが１増加され（Ｓ２）、目標位置（教示点Ｑ３）に達したか否かが判別される（Ｓ３）。目標位置（教示点Ｑ３）に達しない場合（Ｓ３：ＮＯ）は、ステップ４に進み、目標位置（教示点Ｑ３）に達した場合（Ｓ３：ＹＥＳ）は処理を終了する。
【０１０８】
ステップＳ４において、関節角度生成部３９は、補間点バッファ４３から補間点データを読み出す。ここで、補間点データとは、開始位置（教示点Ｑ１）から目標位置（教示点Ｑ３）に達するまでの間に存在する、溶接トーチ１４の先端が移動すべき位置（溶接すべき位置を含む）Ｐ(m)、及びその位置における溶接トーチ１４の姿勢Ｒ(m)よりなるデータである。
【０１０９】
次に、補間点Ｐ(m)が主軌道方向の変化する教示点を越えた最初の補間点であるか否か判断される（Ｓ５）。図２の例では、補間点Ｐ(11)であるか否かが判断される。補間点生成部３８において、軌道バッファ４２の軌道データから補間点データを算出する際に、軌道データに含まれる教示点の情報から、その補間点が教示点を越えた最初の補間点であることが判断でき、その情報も含めて補間点データが補間点バッファ４３に格納されている。
【０１１０】
ところで、溶接ロボット１０には、補間点やＴＣＰ位置を表すための座標系として、基準座標系と進行方向座標系が設定されている。基準座標系は、溶接ロボット１０の設置位置に固定的に設定されている。一方、進行方向座標系は、溶接トーチ１４の先端（ツールセンタポイント）に設定されるもので、溶接トーチ１４の移動に伴って移動する。すなわち、進行方向座標系の原点位置の基準座標系における位置は、溶接トーチ１４の移動によって変化する。
【０１１１】
補間点Ｐ(m)が主軌道方向の変化する教示点を越えた最初の補間点でない場合（Ｓ５：ＮＯ）、補間点Ｐ(m-1)，Ｐ(m)から主軌道進行方向の進行方向座標系（ｎ、ｏ，ａ）が算出される。図２の例では、補間点Ｐ(9)，Ｐ(10)から主軌道進行方向の進行方向座標系（ｎ、ｏ，ａ）が算出される。
【０１１２】
なお、ｔが溶接トーチ軸方向の単位ベクトルとすると、ａはＰ(m-1)Ｐ（m）方向の単位ベクトル、ｏはｔとａに対して垂直方向の単位ベクトル、ｎはｏとａに対して垂直方向の単位ベクトルとする（図１３参照）。この座標上におけるｏ方向のウィービング変位量Ｈが基準座標系に変換され、Ｐ（ｍ）に加算されることで、ＴＣＰ位置Ｐｗ(m)が算出される（Ｓ６）。なお、ウィービング前後で溶接トーチの姿勢は変わらないので、補間点Ｐ(m)における溶接トーチの姿勢Ｒ(m)と、ウィービング変位量加算後の溶接トーチの姿勢Ｒｗ(m)は同じである。
【０１１３】
次に、飛びフラグがＯＮになっているかが判別される（Ｓ７）。位置飛びフラグＯＮまたは姿勢飛びフラグＯＮの場合（Ｓ７：ＹＥＳ），飛び補正が行われ（Ｓ８）、ステップ９に進む。なお、飛び補正については後述する。位置飛びフラグと姿勢飛びフラグがともにＯＦＦの場合（Ｓ７：ＮＯ）、そのままステップ９に進む。
【０１１４】
ステップＳ９では、ＴＣＰ位置Ｐｗ(m)、溶接トーチの姿勢Ｒｗ(m)（（飛び補正した場合はＰｗ (m)’Ｒｗ(m)’）の逆変換により、溶接ロボット１０の各関節角度を示す関節角度データが算出され、関節角度バッファ４４に格納され、ステップＳ２に戻る。
【０１１５】
ステップＳ５において、補間点Ｐ(m)が主軌道方向の変化する教示点Ｑを越えた最初の補間点である場合（Ｓ５：ＹＥＳ）、飛び補正が必要か否かを判別するための指標としてθ、ｄ、φが算出される（Ｓ１０）。まず、主軌道の方向変化を見るために、Ｐ(m-1)ＱとＱＰ(m)の交差角θが算出される。次に、Ｑ，Ｐ(m)から主軌道進行方向の進行方向座標系（ｎ、ｏ，ａ）が算出され、この座標上におけるｏ方向のウィービング変位量Ｈが基準座標系に変換され、Ｐ(m)に加算されることで、ＴＣＰ位置Ｐｗ(m)が算出される。そして、直前のＴＣＰ位置Ｐｗ(m-1)との位置関係を見るために、飛びベクトルｄ＝Ｐｗ(m)−Ｐｗ(m-1）が算出される。次に、ＴＣＰ位置Ｐｗ(m)における溶接トーチの姿勢Ｒｗ(m)を求め、直前のＴＣＰ位置Ｐｗ(m-1)における溶接トーチの姿勢Ｒｗ(m-1)からの溶接トーチの姿勢変化を見るために、Ｒｏｔ（Ｋｒ，φ）＝Ｒｗ(m-1）-1・Ｒｗ(m)により姿勢飛び回転角度φを求める。なお、姿勢の変化を伴うウィービングの場合、補間点Ｐ（m）における溶接トーチの姿勢Ｒ（m）からＴＣＰ位置Ｐｗ(m)における溶接トーチの姿勢Ｒｗ(m)を求める方法はウィービングのタイプにより異なり、ここでは省略する。姿勢の変化を伴わないウィービングの場合、ウィービング前後で溶接トーチの姿勢は変わらないので、Ｒｗ(m)＝Ｒ(m)となる。
【０１１６】
次に、飛び補正が必要か否かを判断するために、θ＞飛び補正必要角度θ0であるか否か判別される（Ｓ１１）。θがある一定角度以内であれば、主軌道の方向変化が少ないので、ＴＣＰ位置および溶接トーチの姿勢が滑らかに繋がる。よって飛び補正は行われない。θ0は溶接ロボットにより変わり、例えばθ0＝５°に設定してある。
【０１１７】
θ≦θ0の場合（Ｓ１１：ＮＯ）、飛び補正は必要ないのでステップＳ７に進む。θ＞θ0の場合（Ｓ１１：ＹＥＳ）、位置飛び補正が必要か否かを判断するために、|ｄ｜＞位置飛び補正必要距離ｄ0であるか否か判別される（Ｓ１２）。主軌道方向が大きく変化したとしても、そのときのウィービング変位量が小さい場合は、直前のＴＣＰ位置からの距離は短く、溶接トーチは滑らかに移動するため、位置飛び補正の必要がない。そこで、飛びベクトルｄの大きさ（以下、「飛び量」という）をある一定値と比較する。ｄ0も溶接ロボットにより変わり、本実施形態では、例えばｄ0＝１ｍｍに設定してある。｜ｄ｜≦ｄ0の場合（Ｓ１２：ＮＯ）、位置飛び補正は必要ないので、そのままステップＳ１４に進む。｜ｄ｜＞ｄ0の場合（Ｓ１２：ＹＥＳ）、位置飛び補正が必要なので、位置飛びフラグがＯＮに設定され（Ｓ１３）、ステップＳ１４に進む。
【０１１８】
次に、姿勢飛び補正が必要か否か判断するために、φ＞姿勢飛び補正必要回転角度φ0であるか否か判別される（Ｓ１４）。φ0は溶接ロボットにより変わるが、本実施形態では、例えばφ0＝0.1度に設定してある。φ≦φ0の場合（Ｓ１４：ＮＯ）、姿勢飛び補正は必要ないので、そのままステップＳ１６に進む。φ＞φ0の場合（Ｓ１４：ＹＥＳ）、姿勢飛び補正が必要なので、姿勢飛びフラグがＯＮに設定され（Ｓ１５）、ステップＳ１６に進む。
【０１１９】
位置飛びフラグがＯＮまたは姿勢飛びフラグがＯＮの場合（Ｓ１６：ＹＥＳ）、飛び補正が必要な期間をカウントするためのカウンタｃが０に初期化され（Ｓ１７）、ステップＳ７に進む
【０１２０】
次に、飛び補正の方法を図１０に示すフローチャートを元に説明する。
【０１２１】
まず、カウンタｃが１増加され（Ｓ２１）、ｃ・ｔ0がＴを超えたか否か判別される（Ｓ２２）。ｔ0は補間周期であり、ｃ・ｔ0は飛び補正が始まる直前のＴＣＰ位置決定後からの経過時間である。Ｔは飛び補正を行う期間であり、予め一定の値を設定（例えばウィービング周期の１／４に設定）しておいてもよいし、飛び補正後の各点間の距離がｄ0以下で各姿勢間の回転角度がφ0以下となればよいので、主軌道方向の変化角度θや飛び量｜ｄ｜、姿勢飛び回転角度φにより算出してもよい。
【０１２２】
ｃ・ｔ0がＴを超えれば（Ｓ２２：ＹＥＳ）、すなわち、飛び補正期間が終了すれば、位置飛びフラグおよび姿勢飛びフラグともにＯＦＦに設定され（Ｓ２３）終了する。ｃ・ｔ0がＴ以下であれば（Ｓ２２：ＮＯ）、すなわち、飛び補正期間中であれば、飛び補正が行われるためにステップＳ２４に進む。
【０１２３】
ステップＳ２４では、位置飛びフラグがＯＮか否か判別される（Ｓ２４）。位置飛びフラグがＯＮの場合（Ｓ２４：ＹＥＳ）、ＴＣＰ位置Ｐｗ(m)’が算出されて（Ｓ２５）、Ｓ２６に進む。ＴＣＰ位置Ｐｗ(m)’は式（１）により算出される。位置飛びフラグがＯＦＦの場合（S２４：ＮＯ）、そのままＳ２６に進む。
【０１２４】
ステップＳ２６では、姿勢飛びフラグがＯＮか否か判別される（Ｓ２６）。姿勢飛びフラグがＯＮの場合（Ｓ２６：ＹＥＳ）、溶接トーチの姿勢Ｒｗ’(m)が算出されて（Ｓ２７）、終了する。溶接トーチの姿勢Ｒｗ(m)’は式（５）により算出される。姿勢飛びフラグがＯＦＦの場合（Ｓ２６：ＮＯ）、終了する。
【０１２５】
上記のように、本実施形態では、ウィービング周波数と溶接速度は変化させることなく、飛びが発生する場合は飛び補正を行うことにより、ウィービング波形を連続させて溶接作業を行うように制御できる。
【０１２６】
なお、本実施形態では、主軌道の進行方向が変化する場合について説明したが、主軌道の進行方向が変化しない場合でもウィービング振幅が途中で急変する場合は、同様に溶接トーチの飛びが発生するので、このような場合にも、変化前後のウィービング後のＴＣＰ位置から飛びベクトルを求め、飛び量が一定値以上大きい場合は、一定期間、式（１）を使って飛び補正を行うことにより、溶接トーチの飛びを抑制することができる。なお、この場合は、主軌道の進行方向が変化しないので、溶接トーチの姿勢は変化することがなく、従って、位置飛び補正だけをすればよい。また、補正を行う期間は予め一定の値を設定（例えばウィービング周期の１／４に設定）しておいてもよいし、飛び補正後の各点間の距離が一定値以下となればよいので、振幅の変化割合や飛び量により算出してもよい。
【０１２７】
図１１は、ウィービング振幅が途中で急変する場合の溶接トーチのＴＣＰ位置の変化を示したもので、教示点Ｑ１Ｑ３間の溶接トーチの主軌道Ｌ上の教示点Ｑ２でウィービング振幅を半分にしたものである。主軌道Ｌ上の各補間点Ｐ(1)〜Ｐ(19)のウィービング動作における溶接トーチのＴＣＰ位置はＰｗ(1)，Ｐｗ(2)，…，Ｐｗ(19)となるが、教示点Ｑ２でウィービング振幅を急変しているので、（１）式により、ＴＣＰ位置Ｐｗ(11)，Ｐｗ(12)，Ｐｗ(13)は、それぞれ、Ｐｗ(11)’，Ｐｗ(12)’，Ｐｗ(13)’に補正される。尤も、補間点Ｐ(13)のＴＣＰ位置Ｐｗ(13)は、ＴＣＰ位置Ｐｗ(13)’＝Ｐｗ(13)となり、実質的に補正されないことになる。
【０１２８】
【数２】
0004842656.tif 000011
【０１２９】
なお、（２）式で算出されるＴＣＰ位置Ｐｗ(11)’は、ＴＣＰ位置Ｐｗ(11)に−（２／３）・ｄ’のベクトルを加算した位置であるから、図１１に示すように、ＴＣＰ位置Ｐｗ(10)とＴＣＰ位置Ｐｗ(11)を結ぶ線分を１：２で内分した位置となる。
【０１３０】
また、（３）式で算出されるＴＣＰ位置Ｐｗ(12)’は、ＴＣＰ位置Ｐｗ(12)に−（１／３）・ｄ’のベクトルを加算した位置であるから、図１１に示すように、ＴＣＰ位置Ｐｗ(12)を通るＴＣＰ位置Ｐｗ(10)とＴＣＰ位置Ｐｗ(11)を結ぶ線分と平行な直線上であって、ＴＣＰ位置Ｐｗ(12)から｜ｄ’｜／３だけＴＣＰ位置Ｐｗ(10)側に寄った位置である。
【図面の簡単な説明】
【０１３１】
【図１】溶接トーチの飛びを抑制する方法を説明するための図で、主軌道の進行方向が変化しないときの溶接トーチのＴＣＰ位置を示す図である。
【図２】溶接トーチの飛びを抑制する方法を説明するための図で、主軌道の進行方向が変化したときの溶接トーチのＴＣＰ位置を示す図である。
【図３】溶接トーチの姿勢の補正を表す図である。
【図４】本願発明に係る溶接ロボット制御装置が適用される溶接ロボット制御システムを示す構成図である。
【図５】溶接ロボット制御装置の内部構成及びその周辺装置を示すブロック図である。
【図６】サーボドライバによるサーボ制御の概念を示すブロック図である。
【図７】ＣＰＵ及びＲＡＭの実際的な機能をブロックにして表した場合の構成図である。
【図８】関節角度生成部の機能を更に細かくブロックにして表した場合の構成図である。
【図９】関節角度生成部で実行される、ウィービング動作における溶接トーチの飛びを抑制する制御のメインフローチャートである。
【図１０】飛び補正の制御を示すフローチャートである。
【図１１】溶接トーチの飛びを抑制する方法を説明するための図で、ウィービング振幅が途中で急変したときの溶接トーチのＴＣＰ位置を示す図である。
【図１２】ウィービング動作を説明するための図である。
【図１３】ウィービング中の溶接トーチのＴＣＰ位置を説明する図である。
【図１４】進行方向が変化したときのＴＣＰ位置の変化について説明する図である。
【符号の説明】
【０１３２】
１０  溶接ロボット
１３  駆動モータ
１４  溶接トーチ
２０  溶接ロボット制御装置
２１  ＣＰＵ
２２  ＲＡＭ
２５  ハードディスク
２８  サーボドライバＩ／Ｆ
３０  溶接電源装置
３５  サーボドライバ
３９  関節角度生成部
４２  軌道バッファ
４３  補間点バッファ
４４  関節角度バッファ
５１  位置制御ブロック
５８  位置フィードバックゲイン
Ｗ  ワーク（被溶接物）
【図１】
0004842656.tif 000014
【図２】
0004842656.tif 000015
【図３】
0004842656.tif 000016
【図４】
0004842656.tif 000017
【図５】
0004842656.tif 000018
【図６】
0004842656.tif 000019
【図７】
0004842656.tif 000020
【図８】
0004842656.tif 000021
【図９】
0004842656.tif 000022
【図１０】
0004842656.tif 000023
【図１１】
0004842656.tif 000024
【図１２】
0004842656.tif 000025
【図１３】
0004842656.tif 000026
【図１４】
0004842656.tif 000027