以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、図1及び図2を参照して、一実施形態に係るロボットシステム10について説明する。ロボットシステム10は、ロボット12、及び制御装置14を備える。
本実施形態においては、ロボット12は、ワークWに対して溶接作業を実行する。具体的には、ロボット12は、垂直多関節型ロボットであって、ロボットベース16、旋回胴18、下腕部20、上腕部22、手首部24、及びツール26を有する。ロボットベース16は、作業セルの床の上に固定される。旋回胴18は、鉛直軸周りに回動可能となるようにロボットベース16に設けられている。
下腕部20は、水平軸周りに回動可能となるように旋回胴18に設けられている。上腕部22は、下腕部20の先端部に回動可能に設けられている。手首部24は、上腕部22の前端部に、互いに直交する2つの軸の周りに回動可能となるように設けられた手首ベース24aと、該手首ベース24aに回動可能に設けられた手首フランジ24bとを有する。
ツール26は、手首フランジ24bに着脱可能に取り付けられる。本実施形態においては、ツール26は、溶接トーチであって、制御装置14からの指令に応じてワークWとの間で放電を発生させ、ワイヤ材送給装置(図示せず)から送給された溶接ワイヤを溶融させてワークWを溶接する。なお、ツール26は、レーザ光を出射して該レーザ光によって溶接ワイヤを溶融させてワークWを溶接するレーザ加工ヘッドであってもよい。
ロボットベース16、旋回胴18、下腕部20、上腕部22、及び手首部24には、複数のサーボモータ28(図2)がそれぞれ内蔵されている。これらサーボモータ28は、制御装置14からの指令に応じてロボット12の各可動要素(すなわち、旋回胴18、下腕部20、上腕部22、手首部24、手首フランジ24b)を回動させ、これによりツール26を移動させる。
制御装置14は、ロボット12の動作を制御する。図2に示すように、制御装置14は、プロセッサ30、メモリ32、及びI/Oインターフェース34を有するコンピュータである。プロセッサ30は、CPU又はGPU等を有し、メモリ32、及びI/Oインターフェース34と、バス36を介して通信可能に接続され、これらコンポーネントと通信しつつ、後述する各種機能のための演算処理を行う。
メモリ32は、RAM又はROM等を有し、プロセッサ30が実行する演算処理で利用される各種データ、及び演算処理の途中で生成される各種データを、一時的又は恒久的に記憶する。I/Oインターフェース34は、例えば、イーサネット(登録商標)ポート、USBポート、光ファイバコネクタ、又はHDMI(登録商標)端子を有し、プロセッサ30からの指令の下、外部機器との間でデータを有線又は無線で通信する。本実施形態においては、ロボット12のサーボモータ28は、I/Oインターフェース34に通信可能に接続されている。
制御装置14には、入力装置38及び表示装置40が設けられている。入力装置38は、キーボード、マウス、又はタッチパネル等を有し、オペレータからデータ入力を受け付ける。表示装置40は、液晶ディスプレイ又は有機ELディスプレイ等を有し、各種データを表示する。
入力装置38、及び表示装置40は、I/Oインターフェース34に、有線又は無線で通信可能に接続されてもよい。また、入力装置38及び表示装置40は、制御装置14の筐体とは別体として設けられてもよいし、又は、制御装置14の筐体に一体に組み込まれてもよい。
図1に示すように、ロボット12には、ロボット座標系C1及びツール座標系C2が設定される。ロボット座標系C1は、ロボット12の各可動要素を自動制御するための座標系である。本実施形態においては、ロボット座標系C1は、その原点がロボットベース16の中心に配置され、そのz軸が旋回胴18の旋回軸に一致するように、ロボット12に対して設定されている。なお、以下の説明においては、便宜上、ロボット座標系C1のx軸プラス方向を右方、y軸プラス方向を前方、z軸プラス方向を上方として言及する。
ツール座標系C2は、ロボット座標系C1においてツール26の位置を自動制御するための座標系であって、ツール26に対して設定される。なお、本稿において、「位置」とは、位置及び姿勢を意味することがある。本実施形態においては、ツール座標系C2は、その原点が、ツール26の作業点(例えば、ツール26が溶接ワイヤを溶融させる点)に位置し、そのz軸方向が、ツール26の作業方向(例えば、溶接トーチ先端の中心軸線の方向、又はレーザ光の出射方向)に一致するように、ツール26に対して設定されている。
ツール26を移動させるとき、プロセッサ30は、ロボット座標系C1においてツール座標系C2を設定し、ツール26を、設定したツール座標系C2によって表される位置に位置決めするように、ロボット12の各サーボモータ28へ指令を送信しロボット12の各可動要素を動作させる。こうして、プロセッサ30は、ロボット12の動作によってツール26をロボット座標系C1の任意の位置に位置決めする。
次に、図3を参照して、ワークWに対する溶接作業時にプロセッサ30がロボット12に実行させるウィービング動作について説明する。ウィービング動作は、ワークWを溶接したときに該ワークWに形成されるビードの幅を広げるために実行される。具体的には、ウィービング動作において、プロセッサ30は、ロボット12によってツール26を予め定められた作業経路WPに沿って移動させるとともに、該ツール26を該作業経路WPと交差する方向へ揺動させる。
図3に示す例では、作業経路WPが、ロボット座標系C1のx軸方向に直線状に延びるように、ワークW上に設定されている。この例の場合、プロセッサ30は、ウィービング動作において、ロボット12によってツール26を作業経路WPに沿って右方へ移動させるととともに、ツール26を、前側の端点P1と、後側の端点P2との間で前後方向へ揺動させる。その結果、ツール26は、ワークWに対し、波線状の軌道TRに沿って移動しつつ、該ワークWを溶接することになる。
プロセッサ30は、ウィービング動作でツール26を揺動させるためのウィービング信号WSを生成する。以下、図4~図6を参照して、ウィービング信号WSの生成について、説明する。図4に示すように、制御装置14は、主動作指令生成部42、信号生成部44、フィルタ部46及び48、及びウィービング動作指令生成部50を有する。主動作指令生成部42は、上述のウィービング動作においてロボット12にツール26を作業経路WPの方向へ移動させるための主動作指令CM1を生成する。
フィルタ部46は、デジタルフィルタ(FIRフィルタ、又はIIRフィルタ)であって、主動作指令生成部42が生成した主動作指令CM1に対し、高周波成分を除去するためのフィルタ処理FR1を、所定のフィルタ時間τ1で実行する。例えば、フィルタ部46は、主動作指令CM1のデジタル信号に対し、フィルタ時間τ1毎に移動平均処理を行うことで、ローパスフィルタ処理としてのフィルタ処理FR1を実行する。
代替的には、フィルタ部46は、フィルタ処理FR1を、バンドパスフィルタ処理、又はノッチフィルタ処理として実行するように構成されてもよい。フィルタ部46は、主動作指令CM1に対してフィルタ処理FR1を実行することで、主動作指令CM2を生成し、ウィービング動作指令生成部50へ出力する。
信号生成部44は、ウィービング信号WS1を生成する。ウィービング信号WS1の一例を図5に示す。なお、図5の縦軸は、ツール26を前後方向へ揺動させる振幅A(換言すれば、作業経路WPからの距離A)を示し、横軸は、時間tを示す。図5に示す例では、ウィービング信号WS1は、振幅A1を有する周期T1(つまり、周波数f1=1/T1)の三角波であって、基準時間t0(例えば、ウィービング動作の開始時間)に対する位相φ1はゼロとなっている。これら振幅A1、周波数f1(又は周期T1)、及び位相φ1は、ウィービング信号WS1を規定するパラメータPR1を構成する。
再度、図4を参照して、フィルタ部48は、上述のフィルタ部46と同様のデジタルフィルタであって、信号生成部44が生成したウィービング信号WS1に対し、高周波成分を除去するためのフィルタ処理FR2を所定のフィルタ時間τ2で実行する。フィルタ処理FR2は、上述のフィルタ処理FR1と同じであってもよいし、異なってもよい。
例えば、フィルタ部48は、デジタル信号としてのウィービング信号WS1に対し、フィルタ時間τ2毎に移動平均処理を行うことで、ローパスフィルタ処理としてのフィルタ処理FR2を実行する。代替的には、フィルタ部48は、フィルタ処理FR2を、バンドパスフィルタ処理、又はノッチフィルタ処理として実行するように構成されてもよい。
フィルタ部48によってウィービング信号WS1に対しフィルタ処理FR2が実行されると、ウィービング信号WS1が変化して、図6に実線で示すウィービング信号WS2が生成される。このウィービング信号WS2は、振幅A2、周期T2(周波数f2=1/T2)、及び位相φ2を含むパラメータPR2を有している。
ウィービング信号WS2のパラメータPR2(振幅A2、周波数f2、位相φ2)のうちの少なくとも1つは、フィルタ処理FR2によって、ウィービング信号WS1のパラメータPR1(振幅A1、周波数f1、位相φ1)から変化し得る。なお、以下の説明においては、パラメータPR2を、フィルタ処理後パラメータPR2として言及することがある。
なお、図6に示す例では、フィルタ処理FR2の結果、三角波のウィービング信号WS1が、三角関数の波形に類似するウィービング信号WS2に変化する(すなわち、高周波成分が除去されることで周波数特性が変化する)とともに、ウィービング信号WS2の振幅A2が減衰してウィービング信号WS1の振幅A1よりも小さくなっている(A2<A1)。フィルタ部48は、生成したウィービング信号WS2をウィービング動作指令生成部50に出力する。
再度、図4を参照して、ウィービング動作指令生成部50は、主動作指令CM2にウィービング信号WS2を適用することで、ロボット12にウィービング動作を実行させるためのウィービング動作指令CM3を生成する。具体的には、ウィービング動作指令生成部50は、加算器であって、主動作指令CM2にウィービング信号WS2を加算することでウィービング動作指令CM3(=CM2+WS2)を生成する。
ウィービング動作指令生成部50によって生成されたウィービング動作指令CM3は、I/Oインターフェース34、及びサーボアンプ(図示せず)を通して、ロボット12のサーボモータ28へ出力される。このウィービング動作指令CM3に従って、ロボット12は、ウィービング動作を実行し、ツール26を図3に示す軌道TRに沿って移動させる。
なお、主動作指令生成部42、信号生成部44、フィルタ部46及び48、及びウィービング動作指令生成部50は、プロセッサ30が実行するコンピュータプログラムによって実現される機能モジュールであり得る。この場合、プロセッサ30が、主動作指令生成部42、信号生成部44、フィルタ部46及び48、及びウィービング動作指令生成部50として機能する。代替的には、信号生成部44、フィルタ部46及び48、及びウィービング動作指令生成部50の少なくとも1つ(例えば、フィルタ部46及び48)は、アナログ回路として制御装置14に実装されてもよい。
次に、図7を参照して、ウィービング信号WSを生成する方法について、さらに詳細に説明する。図7に示すフローは、例えば、制御装置14が起動したときに開始される。ステップS1において、プロセッサ30は、ウィービング信号WS1(図5)のパラメータPR1、及び該パラメータPR1の優先順位POの入力を受け付けたか否かを判定する。
具体的には、プロセッサ30は、図7のフローの開始後、パラメータPR1及び優先順位POを入力するための入力画像を生成し、表示装置40に表示させる。オペレータは、表示装置40を視認しつつ、入力装置38を操作して、パラメータPR1を入力する。ここで、オペレータが入力可能なパラメータPR1は、上述の振幅A1、周波数f1、及び位相φ1に加えて、端点停止時間tsを含む。
この端点停止時間tsは、ウィービング動作におけるツール26の揺動動作の端点P1及びP2(すなわち、図5において振幅AがA1及び-A1になる位置)に該ツール26を維持する時間を規定する。端点停止時間tsが設定されたときのウィービング信号WS1の一例を、図8に示す。
例えば、オペレータが、パラメータPR1として、振幅A1、周波数f1、及び端点停止時間ts、及び位相φ1=0を入力したとする。この場合、プロセッサ30は、図5に示す振幅A1及び周波数f1を有する三角波としてのウィービング信号WS1の傾きを維持しつつ、該ウィービング信号WS1における振幅A1及び-A1の点(三角波の頂点)に、端点停止時間tsを設定する。その結果、ウィービング信号WS1は、図8に示す台形波として設定されることになる。したがって、この場合、ウィービング信号WS1の周波数fは、オペレータが入力した周波数f1から、周波数f3(=1/T3<f1 T3=T1+2ts)へ変更されることになる。
プロセッサ30は、入力装置38を通して、パラメータPR1の入力を受け付ける。このように、本実施形態においては、プロセッサ30は、ウィービング信号WS1のパラメータPR1の入力を受け付ける入力受付部52(図2)として機能する。プロセッサ30は、受け付けたパラメータPR1を、ウィービング信号WS1のパラメータ設定値PR1Vとして、メモリ32に記憶する。以下、プロセッサ30が、図5に示すウィービング信号WS1のパラメータPR1(振幅A1、周波数f1、位相φ1=0、端点停止時間ts=0)の入力を受け付けた場合について、説明する。
オペレータは、入力装置38を操作して、パラメータPR1とともに、優先順位POを入力する。ここで、図6を参照して説明したように、フィルタ処理FR2によって、元のウィービング信号WS1のパラメータPR1(例えば、振幅A1)が変化し得る。優先順位POは、パラメータPR1が変化した場合に、ステップS1でオペレータが入力した値を優先して再現すべきパラメータPR1の優先順位を定める。
例えば、このステップS1において、オペレータは、パラメータPR1として振幅A1、周波数f1、位相φ、及び端点停止時間tsを入力するとともに、振幅A1の値を優先して再現すべきと定める優先順位PO(つまり、振幅A1の優先順位が1位であると定める優先順位PO)を入力する。プロセッサ30は、入力受付部52として機能して、優先順位POの入力を受け付ける。
ステップS2において、プロセッサ30は、フィルタ処理FR2のフィルタ時間τ2を決定する。具体的には、プロセッサ30は、固有フィルタ時間τaを読み出す。この固有フィルタ時間τaは、ロボット12の種類毎に固有に定められ、メモリ32に予め格納される。一方、プロセッサ30は、ステップS1で受け付けたパラメータPR1に基づいて、許容フィルタ時間τbを求める。
この許容フィルタ時間τbは、フィルタ処理FR2によって元のウィービング信号WS1のパラメータPR1(例えば、振幅A1)から変化したフィルタ処理後パラメータPR2(例えば、振幅A2)を所定の許容範囲内(例えば、振幅A2が振幅A1の50%以上の範囲)に収めることができるフィルタ時間である。
例えば、プロセッサ30は、許容フィルタ時間τbを、τb=T1/2として求めてもよい。そして、プロセッサ30は、固有フィルタ時間τaと許容フィルタ時間τbのうちの長い方を、フィルタ時間τ2として決定する。このように、本実施形態においては、プロセッサ30は、受け付けたパラメータPR1に基づいて、フィルタ時間τ2を決定する。
ステップS3において、プロセッサ30は、信号生成部44として機能し、ステップS1で受け付けたパラメータPR1を有するウィービング信号WS1を生成する。これにより、プロセッサ30は、図5に示すような、振幅A1、周波数f1、位相φ1(=0)、及び端点停止時間ts(=0)を有するウィービング信号WS1を生成する。
ステップS4において、プロセッサ30は、フィルタ処理後パラメータPR2を取得する。フィルタ処理後パラメータPR2は、ステップS3で生成したウィービング信号WS1に対しフィルタ処理FR2を実行した場合の、該ウィービング信号WS1の変化後のパラメータPR2である。一例として、プロセッサ30は、ステップS4において、上述のステップS3で生成したウィービング信号WS1に対し、実際のフィルタ処理FR2を模擬的に実行することで、フィルタ処理後パラメータPR2を取得する。
他の例として、プロセッサ30は、ステップS1で受け付けたパラメータPR1、及びステップS2で決定したフィルタ時間τ2に基づいて、フィルタ処理後パラメータPR2を演算により求めてもよい。以下、図9を参照して、フィルタ処理後パラメータPR2を演算により求める方法について説明する。
図9は、振幅A1、周波数f3(=1/T3=1/(T1+2ts))、位相φ1(=0)、及び端点停止時間tsを有するウィービング信号WS1を示しており、このウィービング信号WS1に対し、フィルタ処理FR2のフィルタ時間τ2が設定されている。この例において、プロセッサ30は、ウィービング信号WS1に対しフィルタ処理FR2を行うことによって得られるウィービング信号WS2の振幅A2を、以下の式(1)から、演算により求めることができる。
A2=Ab+Aa(1+ts/τ2)/2 ・・・(1)
ここで、式(1)中のAa及びAbは、以下の式(2)及び(3)からそれぞれ求められる。
Aa=A1(2(τ2-ts)/T1) ・・・(2)
Ab=A1-Aa=A1-A1(2(τ2-ts)/T1) ・・・(3)
なお、本実施形態においては、ステップS1で受け付けた端点停止時間tsがゼロであるので、上述の式(1)~(3)においてts=0が代入されることになる。このように、プロセッサ30は、フィルタ処理後パラメータPR2として、式(1)から振幅A2を演算により求めることができる。すなわち、この場合、プロセッサ30は、ステップS3で生成したウィービング信号WS1に対し実際のフィルタ処理FR2を実行することなく、フィルタ処理後パラメータPR2を取得できる。
このように、本実施形態においては、プロセッサ30は、フィルタ処理後パラメータPR2を取得するパラメータ取得部54(図2)として機能する。なお、本実施形態においては、ウィービング信号WS1にフィルタ処理FR2を実行したとしても、周波数f1及び位相φ1は変化しないとする。よって、フィルタ処理後パラメータPR2の周波数f2及び位相φ2は、周波数f1及びφ1と同じとなる(f2=f1、φ2=φ1)。
再度、図7を参照して、ステップS5において、プロセッサ30は、ステップS4で取得したフィルタ処理後パラメータPR2が、予め定めた第1条件CD1を満たすか否かを判定する。本実施形態においては、この第1条件CD1は、フィルタ処理後パラメータPR2が、ステップS1で受け付けたパラメータPR1と実質同じであるという条件として、定められる。
例えば、フィルタ処理後パラメータPR2が振幅A2である場合、プロセッサ30は、振幅A2が、振幅A1を基準として定められた許容範囲(例えば、振幅A1の90%以上の範囲)に収まっている場合は、フィルタ処理後パラメータPR2(振幅A2)がパラメータPR1(振幅A1)と実質同じであると判定し、故に、第1条件CD1を満たしている(すなわち、YES)と判定する。一方、プロセッサ30は、振幅A2が許容範囲外である場合は、フィルタ処理後パラメータPR2がパラメータPR1と異なっていると判定し、故に、第1条件CD1を満たしていない(すなわち、NO)と判定する。
なお、プロセッサ30は、このステップS5において、ステップS1で受け付けた優先順位POが高いパラメータPR1(例えば、振幅A1)についてのみ、第1条件CD1を満たしているか否かを判定してもよい。代替的には、プロセッサ30は、ステップS1で受け付けた全てのパラメータPR1(振幅A1、周波数f1、位相φ1、端点停止時間ts)について、第1条件CD1を満たしているか否かを判定してもよい。
このように、本実施形態においては、プロセッサ30は、フィルタ処理後パラメータPR2が条件CD1を満たすか否かを判定する条件判定部56(図2)として機能する。プロセッサ30は、このステップS5でYESと判定した場合はステップS7へ進む一方、NOと判定した場合はステップS6へ進む。
ステップS6において、プロセッサ30は、ステップS1で受け付けたパラメータPR1を、第1条件CD1を満たすように調整する。具体的には、プロセッサ30は、ステップS4で取得したフィルタ処理後パラメータFR2を、ステップS1で受け付けたパラメータPR1に一致させることができるように、該パラメータPR1を調整する。
例えば、プロセッサ30は、図10に示すように、ステップS1で受け付けたパラメータPR1としての振幅A1を増加させて、振幅A1’(>A1)とする。その結果、信号生成部44(図4)によって生成されるウィービング信号WS1は、振幅A1’を有するウィービング信号WS1’に変更されることになる。
パラメータ調整後のウィービング信号WS1’に対しフィルタ処理FR1を実行した場合に生成されるウィービング信号WS2を、図11に示す。図11に示すように、パラメータPR1の振幅A1を振幅A1’に増大させることで、ウィービング信号WS2の振幅A2を、ステップS1で受け付けた振幅A1に一致させることができる(A2=A1)。
こうして、ウィービング信号WS2のフィルタ処理後パラメータPR2(振幅A2、周波数f2、位相φ2)は、ウィービング信号WS1のパラメータPR1と一致することになり(A2=A1、f2=f1、φ2=φ1=0、ts=0)、これにより、第1条件CD1を満たすことができる。
なお、プロセッサ30は、このステップS6で振幅A1を増加させる変化量を、図6に示す振幅A1から振幅A2への変化量に基づいて定めてもよい。一例として、プロセッサ30は、ステップS4において、図6中の振幅A1と振幅A2との差Δ1(=A1-A2)を取得する。そして、プロセッサ30は、ステップS6において、振幅A1に、Δ1×α(αは所定の係数)を加算することで、振幅A1’(=A1+Δ1×α)とする。他の例として、プロセッサ30は、ステップS4において、図6中の振幅A1と振幅A2との比R1(=A1/A2)を取得する。そして、プロセッサ30は、ステップS6で振幅A1に比R1を乗算することで、振幅A1’(=A1×R1)とする。
このようにして、プロセッサ30は、第1条件CD1を満たすように、パラメータPR1(例えば、振幅A1)を、パラメータPR1’(振幅A1’)へ調整する。したがって、本実施形態においては、プロセッサ30は、パラメータ調整部58(図2)として機能する。プロセッサ30は、メモリ32に格納されているパラメータ設定値PR1Vを、このステップS6で調整した後のパラメータPR1’に更新する。
ステップS7において、プロセッサ30は、動作状態パラメータOPRを取得する。動作状態パラメータOPRは、ウィービング信号WS2に従ってロボット12にウィービング動作を実行させたときの該ロボット12の動作状態を表すパラメータであって、例えば、ロボット12の速度V、加速度a、及び躍度jを含む。
例えば、ステップS5でYESと判定した後にステップS7を実行する場合、動作状態パラメータOPRは、図6に示すウィービング信号WS2に従ってロボット12にウィービング動作を実行させたときの該ロボット12の速度V、加速度a、及び躍度jを含む。図6に示すウィービング信号WS2は、ステップS1で受け付けたパラメータPR1に対応するフィルタ処理後パラメータPR2(振幅A2<A1、周波数f2=f1、位相φ2=φ1)を有する。
一方、ステップS6の後にステップS7を実行する場合、動作状態パラメータOPRは、図11に示すウィービング信号WS2に従ってロボット12にウィービング動作を実行させたときの該ロボット12の速度V、加速度a、及び躍度jを含む。図11のウィービング信号WS2は、ステップS6の調整後のパラメータPR1’に対応するフィルタ処理後パラメータPR2(振幅A2=A1、周波数f2=f1、位相φ2=φ1)を有する。
プロセッサ30は、このステップS7において、上述のステップS3及びS4と同様のプロセスを実行することで、図6又は図11のウィービング信号WS2のフィルタ処理後パラメータPR2を取得する。具体的には、ステップS5でYESと判定した後にステップS7を実行する場合、プロセッサ30は、ステップS1で受け付けたパラメータPR1を有するウィービング信号WS1を模擬的に生成し、次いで、該ウィービング信号WS1に対応するフィルタ処理後パラメータPR2(振幅A2<A1、周波数f2=f1、位相φ2=φ1)を取得する。
一方、ステップS5でYESと判定した後にステップS7を実行する場合、プロセッサ30は、ステップS6の調整後のパラメータPR1’を有するウィービング信号WS1’を模擬的に生成し、次いで、該ウィービング信号WS1’に対応するフィルタ処理後パラメータPR2(振幅A2=A1、周波数f2=f1、位相φ2=φ1)を取得する。
次いで、プロセッサ30は、取得したフィルタ処理後パラメータPR2を有するウィービング信号WS2を模擬的に生成する。これとともに、プロセッサ30は、主動作指令生成部42として機能し、主動作指令CM1を模擬的に生成し、フィルタ部46として機能し、主動作指令CM1にフィルタ処理FR1を実行することで、主動作指令CM2を生成する。
そして、プロセッサ30は、ウィービング動作指令生成部50として機能し、生成したウィービング信号WS2を主動作指令CM2に適用することで、ウィービング動作指令CM3(=CM2+WS2)を模擬的に生成する。プロセッサ30は、模擬的に生成したウィービング動作指令CM3に基づいて、該ウィービング動作指令CM3に従ってロボット12にウィービング動作を実行させたときの該ロボット12の速度V、加速度a、及び躍度jを求める。
このとき、プロセッサ30は、ウィービング動作指令CM3に従ってロボット12にウィービング動作を実行させるシミュレーションを行うことで、速度V、加速度a、及び躍度jを取得してもよい。このように、本実施形態においては、プロセッサ30は、動作状態パラメータOPR(速度V、加速度a、躍度j)を取得する動作取得部60(図2)として機能する。
ステップS8において、プロセッサ30は、条件判定部56として機能し、フィルタ処理後パラメータPR2が、予め定めた第2条件CD2を満たすか否かを判定する。本実施形態においては、この第2条件CD2は、ステップS7で取得した動作状態パラメータOPR(速度V、加速度a、躍度j)が所定の許容値を超えないという条件として、定められる。
例えば、プロセッサ30は、ステップS7で取得した速度V、加速度a、及び躍度jの各々について、許容値を超えたか否かを判定する。そして、プロセッサ30は、速度V、加速度a、及び躍度jの少なくとも1つが、対応する許容値を超えた場合に、ステップS7で動作状態パラメータOPRを取得したウィービング信号WS2のフィルタ処理後パラメータPR2が、第2条件CD2を満たしていない(すなわち、NO)と判定する。
一方、プロセッサ30は、速度V、加速度a、及び躍度jの全てが、対応する許容値を超えない場合には、フィルタ処理後パラメータPR2が第2条件CD2を満たしている(すなわち、YES)と判定する。速度V、加速度a、及び躍度jの許容値は、メモリ32に予め格納される。
なお、プロセッサ30は、ステップS7で、1つの動作状態パラメータOPR(例えば、速度V)のみを取得し、このステップS8において、該1つの動作状態パラメータOPRが許容値を超えた否かを判定してもよい。プロセッサ30は、このステップS8でYESと判定した場合はステップS10へ進む一方、NOと判定した場合はステップS9へ進む。
ステップS9において、プロセッサ30は、パラメータ調整部58として機能し、第2条件CD2を満たすように、パラメータPR1又はPR1’を調整する。具体的には、プロセッサ30は、ステップS1で受け付けた優先順位POに従って、パラメータPR1又はPR1’を以下のように調整する。
すなわち、プロセッサ30は、優先順位POの高い第1のパラメータPR1又はPR1’に対応するフィルタ処理後パラメータPR2を、該第1のパラメータPR1又はPR1’に一致させる一方、優先順位が低い第2のパラメータPR1又はPR1’に対応するフィルタ処理後パラメータPR2が該第2のパラメータPR1又はPR1’と異なることを許容するように、パラメータPR1又はPR1’を調整する。
以下、プロセッサ30が、ステップS1で、振幅A1を優先して再現すべきと定める優先順位POの入力を受け付けた場合について説明する。例えば、ステップS5でYESと判定した後に(つまり、ステップS6を実行せずに)ステップS9を実行する場合、プロセッサ30は、図5に示すウィービング信号WS1のパラメータPR1を、端点停止時間ts(>0)を設定するように、調整する。図12に、このように端点停止時間tsが設定されたウィービング信号WS1’を示す。
図12に示すウィービング信号WS1’の周波数f1’(=1/T1’)は、元のウィービング信号WS1の周波数f1よりも低くなる。すなわち、この場合、プロセッサ30は、パラメータPR1を、振幅A1、周波数f1’、位相φ(=0)、及び端点停止時間ts(>0)を有するパラメータPR1’に調整する。
調整後のパラメータPR1’を有するウィービング信号WS1’にフィルタ処理FR2を実行した場合、図13に示すウィービング信号WS2が得られる。このウィービング信号WS2は、フィルタ処理後パラメータPR2として、振幅A2=A1を有することになる。
このように、端点停止時間tsを長くするように調整することで、フィルタ処理後パラメータPR2の振幅A2として、振幅A1を再現することができる。このときに調整する端点停止時間tsは、第2条件CD2を満たすことができるように、定められる。例えば、端点停止時間tsは、フィルタ時間τ2に一致する値(又は、フィルタ時間τ2に所定の係数を乗算した値)として、定められ得る。
一方、図7のステップS5でNOと判定した後(つまり、ステップS6の実行後)にステップS9を実行する場合、プロセッサ30は、まず、ステップS6で調整したパラメータPR1’をキャンセルする(換言すれば、この時点でパラメータ設定値PR1Vとして記憶されているパラメータPR1’を削除する)。
そして、プロセッサ30は、図12で説明した方法と同様に、ステップS1で受け付けたパラメータPR1を、端点停止時間tsを設定するように調整する。その結果、ステップS9で新たに調整されたパラメータPR1’を有するウィービング信号WS1’(図12)が生成されることになり、その結果、パラメータPR2の振幅A2として、振幅A1を再現することができる。
なお、プロセッサ30は、端点停止時間tsを設定することなく、振幅A1を再現することもできる。例えば、ステップS5でNOと判定した後にステップS9を実行する場合、プロセッサ30は、ステップS6で調整した後のパラメータPR1’の周波数f1を、f1’に低下させるように、該パラメータPR1’をさらに調整する。
すなわち、この場合は、図10に示すウィービング信号WS1’の周期T1が、より長い周期T1’(>T1)に増加することになる。よって、さらなる調整後のパラメータPR1’は、振幅A1’及び周波数f1’を有することになる。このときに周波数f1を周波数f1’に低下させる変化量は、第2条件CD2を満たすことができるように、振幅A1’に基づいて定められてもよい。
一例として、第2条件CD2を満たすことができる振幅Aと周波数fとのデータテーブルDTが、メモリ32に予め格納されてもよい。このデータテーブルDTは、実験的手法又はシミュレーションによって、予め作成することができる。そして、プロセッサ30は、振幅A1’に対応する周波数fをデータテーブルDTから読み出して、パラメータPR1’の周波数f1’として決定してもよい。
このように、優先順位POに従って振幅A1を優先すべき場合、プロセッサ30は、フィルタ処理後パラメータPR2の振幅A2を、ステップS1で受け付けたパラメータPR1の振幅A1に一致させる一方、フィルタ処理後パラメータPR2の周波数f2が、ステップS1で受け付けた周波数f1と異なることを許容するように、パラメータPR1又はPR1’を調整する。
次に、プロセッサ30が、ステップS1で、周波数f1を優先して再現すべきと定める優先順位POの入力を受け付けた場合について説明する。例えば、ステップS5でYESと判定した後にステップS9を実行する場合、プロセッサ30は、図5に示すウィービング信号WS1のパラメータPR1を、振幅A1を減少させるように調整する。また、ステップS5でNOと判定した後にステップS9を実行する場合、プロセッサ30は、図10に示すウィービング信号WS1’のパラメータPR1’を、振幅A1’を減少させるように、さらに調整する。
ここで、第2条件CD2を満たすことができるか否か(つまり、動作状態パラメータOPRが許容値を超えないか否か)は、ウィービング信号WS2の振幅A2及び周波数f2の組み合わせに依存する。具体的には、振幅A2が大きくなる程、また、周波数f2が高くなる程、第2条件CD2を満たすことができない可能性が増大する。
したがって、このステップS9で周波数f1を低下させるか、又は振幅A1、A1’を減少させることによって、第2条件CD2を満たすように(つまり、動作状態パラメータOPRが許容値を超えないように)、パラメータPR1又はPR1’を調整することができる。プロセッサ30は、メモリ32に格納されているパラメータ設定値PR1Vを、このステップS9で調整した後のパラメータPR1’に更新する。
再度、図7を参照して、ステップS10において、プロセッサ30は、オペレータ、上位コントローラ、又はコンピュータプログラムから作業開始指令を受け付けたか否かを判定する。プロセッサ30は、作業開始指令を受け付けた(すなわち、YES)と判定した場合はステップS10へ進む一方、NOと判定した場合はステップS10をループする。
ステップS11において、プロセッサ30は、ウィービング動作指令CM3を生成する。具体的には、プロセッサ30は、図4を参照して説明したように、信号生成部44として機能して、この時点でパラメータ設定値PR1Vとして記憶されているパラメータPR1又はPR1’を用いて、該パラメータPR1又はPR1’を有するウィービング信号WS1(図5)又はWS1’(図10又は図12)を生成する。
そして、プロセッサ30は、フィルタ部48として機能し、ウィービング信号WS1又はWS1’に対してフィルタ処理FR2を実行し、ウィービング信号WS2(図6、図11、又は図13)を生成する。ここで生成されるウィービング信号WS2のパラメータPR2においては、上述したように、優先順位POが高いパラメータPR1(例えば、振幅A1又は周波数f1)が再現されている。
そして、プロセッサ30は、上述したように、ウィービング信号WS2に基づいてウィービング動作指令CM3を生成し、該ウィービング動作指令CM3に従ってロボット12のサーボモータ28を動作させることで、ロボット12に、図3に示すようなウィービング動作を実行させる。これとともに、プロセッサ30は、ツール26を起動して、ワークWを溶接する。
再度、図7を参照して、ステップS12において、プロセッサ30は、溶接作業が終了したか否かを判定する。プロセッサ30は、溶接作業が終了した(すなわち、YES)と判定した場合は、図7に示すフローを終了する一方、NOと判定した場合は、ステップS12をループする。こうして、プロセッサ30は、ワークWに対する溶接作業を実行する間、ロボット12にウィービング動作を実行させる。
以上のように、本実施形態においては、プロセッサ30は、入力受付部52、信号生成部44、パラメータ取得部54、条件判定部56、パラメータ調整部58、及び動作取得部60として機能して、ウィービング動作のための信号WS1、WS1’、WS2を生成する。
したがって、入力受付部52、パラメータ取得部54、信号生成部44、条件判定部56、パラメータ調整部58、及び動作取得部60は、信号WS1、WS1’、WS2を生成する装置70(図2)を構成する。装置70(入力受付部52、パラメータ取得部54、信号生成部44、条件判定部56、パラメータ調整部58、及び動作取得部60)は、プロセッサ30が実行するコンピュータプログラムにより実現される機能モジュールであり得る。
この装置70においては、条件判定部56が条件CD1、CD2を満たさないと判定した場合に、パラメータ調整部58が、該条件CD1、CD2を満たすように、入力受付部52が受け付けたパラメータPR1を調整している(ステップS6、S9)。そして、信号生成部44は、パラメータ調整部58がパラメータPR1を調整した場合に、調整後のパラメータPR1’を有するウィービング信号WS1’を生成する(ステップS11)。
この構成によれば、オペレータが任意に定めた条件CD1、CD2を満足するウィービング信号WSを生成することができるように、パラメータPR1を自動で調整することが可能となる。これにより、オペレータが所望する態様でロボット12にウィービング動作を実行させることができるとともに、所望のウィービング動作をロボット12に教示する作業を簡単化することができる。
また、装置70においては、条件判定部56は、フィルタ処理後パラメータPR2がパラメータPR1と異なる場合に、第1条件CD1を満たさないと判定し(ステップS5でNO)、パラメータ調整部58は、フィルタ処理後パラメータPR2をパラメータPR1に一致させることができるように、該パラメータPR1を調整する(ステップS6)。
この構成によれば、調整後のパラメータPR1’を有するウィービング信号WS1’にフィルタ処理FR2を実行することで得られるウィービング信号WS2において、オペレータが入力したパラメータPR1(例えば、振幅A1)を再現することができる。これにより、オペレータが所望するウィービング動作を、ロボット12により効果的に実行させることができる。
また、装置70においては、パラメータ調整部58は、複数のパラメータPR1(例えば、振幅A1、周波数f1)の優先順位POに従って、該優先順位POの高い第1のパラメータPR1(例えば、振幅A1)に対応するフィルタ処理後パラメータPR2(振幅A2)を、該第1のパラメータPR1に一致させる一方、優先順位POが低い第2のパラメータPR1(例えば、周波数f1)に対応するフィルタ処理後パラメータPR2(周波数f2)が該第2のパラメータPR1と異なることを許容するように、複数のパラメータPR1を調整している(ステップS9)。
そして、入力受付部52は、優先順位POの入力をさらに受け付け、パラメータ調整部58は、入力受付部52が受け付けた優先順位POに従って、複数のパラメータPR1を調整している。この構成によれば、ウィービング信号WS2において、オペレータが入力した優先順位POの高いパラメータPR1を優先的に再現することができるので、ロボット12に実行させるウィービング動作を、オペレータが条件CD1、CD2を考慮して任意に設計することができる。また、オペレータが、生成されるウィービング信号WS2を予想し易くなるので、ウィービング動作時のロボット12の挙動の検証を容易化することができる。
また、装置70においては、動作取得部60が動作状態パラメータOPRを取得し(ステップS7)、条件判定部56は、動作取得部60が取得した動作状態パラメータOPRが所定の許容値を超えた場合に、第2条件CD2を満たさないと判定する(ステップS8でNO)。この場合、パラメータ調整部58は、動作状態パラメータOPRが許容値を超えないように、パラメータPR1を調整する(ステップS9)。
この構成によれば、ウィービング動作時にロボット12が不適切な動作状態(例えば、速度、加速度、又は躍度が過大となる状態)になるのを防止することができるので、ロボット12に過度な負荷が掛かるのを防止し、以って、ロボット12が故障してしまうのを防止できる。また、ロボット12が不適切な動作状態でウィービング動作を実行することによってワークWに対する溶接品質が低下してしまうのを防止することができる。
なお、図8を参照して説明したように、ステップS1においてオペレータが、振幅A1、周波数f1、及び端点停止時間ts(>0)を入力した場合、ウィービング信号WS1の周波数fは、オペレータが入力した周波数f1から周波数f3へ変更されることになる。
図14に、振幅A1、周波数f1、及び端点停止時間ts=0を有する三角波としての信号WS0と、振幅A1、周波数f3(=1/T3)、及び端点停止時間ts(>0)を有するウィービング信号WS1を示す。プロセッサ30は、ステップS1で端点停止時間tsの入力を受け付けると、周波数f3を、パラメータPR1のパラメータ設定値PR1Vとしてメモリ32に記憶する。
そして、プロセッサ30は、上述のステップS4において、フィルタ処理後パラメータPR2として、周波数f3を取得することになる。そうすると、プロセッサ30は、ステップS5で、フィルタ処理後パラメータPR2としての周波数f3が、ステップS1で受け付けた周波数f1と異なっているので、NOと判定することになる。
この場合において、オペレータがステップS1で周波数f1を優先して再現すべきと定める優先順位POを入力したとすると、プロセッサ30は、ステップS6において、パラメータ設定値PR1Vとして設定されている周波数f3を、入力を受け付けた周波数f1に変更するように、パラメータPR1を調整する。
その結果、信号生成部44によって生成されるウィービング信号WS1は、図15に示すように、周波数f1を有する台形波としてのウィービング信号WS1’に変更されることになる。そして、プロセッサ30は、周波数f1を有する、ウィービング信号WS1’のパラメータPR1’を、パラメータ設定値PR1Vとしてメモリ32に記憶する。
なお、装置70から動作取得部60を省略し、図7に示すフローから、ステップS7~S9を省略してもよい。この場合、プロセッサ30は、図7に示すフローにおいて、ステップS6の後に、ステップS10を実行する。このフローにおいて、オペレータがステップS1で振幅A1を優先して再現すべきと定める優先順位POを入力したとする。この場合において、プロセッサ30は、ステップS6において、図12を参照して説明した方法で、端点停止時間tsを長くするように、パラメータPR1を調整してもよい。
代替的には、プロセッサ30は、ステップS6において、振幅A1と周波数f1の双方を変化させるように、パラメータPR1を調整してもよい。このようなパラメータ調整方法について、図16を参照して説明する。図16は、プロセッサ30がステップS1で受け付けたパラメータPR1としての振幅A1、周波数f1(=1/T1)、位相φ1(=0)、及び端点停止時間ts(=0)を有するウィービング信号WS1が示されている。
このようなパラメータPR1を受け付けた場合において、プロセッサ30は、ステップS6において、振幅A1を振幅A1’に増大させるとともに、周波数f1を周波数f1’(=1/T1’<f1)に低下させるように、パラメータPR1を調整する。その結果、信号生成部44は、図16に示すように、調整後のパラメータPR1’(振幅A1’、周波数f1’、位相φ1=0、端点停止時間ts=0)を有するウィービング信号WS1’を生成することになる。
図17に、図16に示すウィービング信号WS1’に対しフィルタ処理FR2を実行した場合に得られるウィービング信号WS2を示す。このウィービング信号WS2のフィルタ処理後パラメータPR2においては、振幅A2は、ステップS1で受け付けた振幅A1と一致する一方、周波数f2(=f1’)は、ステップS1で受け付けた周波数f1とは異なることになる。
このようなパラメータ調整方法において、プロセッサ30は、フィルタ処理後パラメータPR2が第2条件CD2を満たすように、ステップS6で振幅A1及び周波数f1を変化させる変化量を決定してもよい。例えば、プロセッサ30は、上述のデータテーブルDTを用いることで、該変化量を決定してもよい。
なお、図7に示すフローからステップS7~S9を省略した場合において、オペレータがステップS1で周波数f1を優先して再現すべきと定める優先順位POを入力したとすると、プロセッサ30は、ステップS6において、パラメータPR1を調整しなくてもよい。
具体的には、図6に示すように、ウィービング信号WS1にフィルタ処理FR2を実行すると振幅A1が減衰するが、周波数f1は維持される。よって、プロセッサ30は、ステップS6でパラメータPR1を調整せずとも、優先順位POの高い周波数f1を再現でき得る。
次に、図18を参照して、プロセッサ30(装置70)が実行するウィービング信号WSを生成する方法の他の形態について、説明する。なお、図18に示すフローにおいて、図7に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。以下、プロセッサ30が、ステップS1で、振幅A1を優先して再現すべきと定める優先順位POの入力を受け付けた場合について説明する。本実施形態においては、プロセッサ30は、ステップS5又はS8でNOと判定した後、ステップS6’を実行する。
ステップS6’において、プロセッサ30は、パラメータ調整部58として機能し、この時点でパラメータ設定値PR1Vとして設定されているパラメータPR1又はPR1’を、条件CD1及びCD2を満たすように調整する。例えば、ステップS5でNOと判定した後にステップS6’を実行する場合、プロセッサ30は、上述のステップS6と同様に、ステップS1で受け付けた振幅A1を増加させて振幅A1’とする。
一方、ステップS8でNOと判定した後にステップS6’を実行する場合、プロセッサ30は、例えば、図12に示す端点停止時間tsを設定する(つまり、周波数f1又はf1’を変化させる)か、又は、図16を参照して説明したように、振幅A1又はA1’と、周波数f1又はf1’の双方を変化させる。
ここで、ステップS8でNOと判定した後にステップS6’を実行する場合において、プロセッサ30は、パラメータPR1又はPR1’を変化させる変化量を、第2条件CD2を満たすことができるように、例えば上述のデータテーブルDTを用いて決定してもよい。代替的には、プロセッサ30は、ステップS6’を実行する毎に、優先順位POの低いパラメータPR1又はPR1’(例えば、周波数f1又はf1’)を、ランダムに変化させてもよい。
プロセッサ30は、ステップS6’の実行後、ステップS3へ戻り、ステップS8でYESと判定するまで、ステップS3~S5、S6’、S7及びS8のループを繰り返し実行する。これにより、プロセッサ30は、優先順位POに従って、条件CD1及びCD2を満たすことができるパラメータPR1’を自動で検索することができる。
なお、図18に示すフローにおいて、プロセッサ30は、ステップS5において、ステップS1で受け付けた優先順位POの高い(つまり、1位である)パラメータPR1(例えば、振幅A1)についてのみ、第1条件CD1を満たしているか否かを判定してもよい。
代替的には、プロセッサ30は、第1回目に実行するステップS5においては、ステップS1で受け付けた全てのパラメータPR1について第1条件CD1を満たしているか否かを判定する一方、第n回目(nは2以上の整数)に実行するステップS5においては、ステップS1で受け付けた優先順位POの高いパラメータPR1(例えば、振幅A1)についてのみ、第1条件CD1を満たしているか否かを判定してもよい。
本実施形態によれば、プロセッサ30が、最適なパラメータPR1’を自動で検索するので、オペレータが所望する態様に合致するウィービング動作を効果的に設計できるとともに、このようなウィービング動作をロボット12に教示する作業を簡単化することができる。
なお、上述の実施形態においては、フィルタ処理FR2によって位相φ1が変化しない場合について述べた。しかしながら、フィルタ処理FR2の種類によっては、位相φ1が変化する場合がある。このような場合において、ステップS1で位相φ1を優先して再現すべきと定める優先順位POの入力を受け付けた場合、プロセッサ30は、上述のステップS6、S6’又はS9において、位相φ1を再現するように、パラメータPR1、PR1’を調整することになる。
以下、図19~図21を参照して、位相φ1を再現する方法について、説明する。図19においては、パラメータPR1として振幅A1、周波数f1(=1/T1)、及び位相φ1(=0)を有するウィービング信号WS1を点線で示している。一方、該ウィービング信号WS1に対しフィルタ処理FR2を実行することで得られるウィービング信号WS2を実線で示している。図19に示す例では、ウィービング信号WS2の位相φ2が、ウィービング信号WS1の位相φ1に対し、位相φvだけ遅れている(つまり、φ2=φ1-φv)。
このような場合において、優先順位POが高い位相φ1を再現するために、プロセッサ30は、図20に示すウィービング信号WS1’を生成するように、パラメータPR1を調整する。図20に示すウィービング信号WS1’は、一点鎖線で示す1波長目の波形WSaと、実線で示す2波長目以降の波形WSbとを含む。
ウィービング信号WS1’の波形WSaは、ウィービング信号WS1の1波長目の波形の傾きを維持しつつ、該波形の振幅A1を、振幅A1’に低減させることで、得られる。一方、ウィービング信号WS1’の波形WSbは、ウィービング信号WS1の2波長目以降の波形と同じ振幅A1を有している。このように低減された振幅A1’を有する波形WSaによって、波形WSbの位相φ1’が、元のウィービング信号WS1に対し、位相φvだけ進むことになる(つまり、φ1’=φ1+φv)。
プロセッサ30は、図20に示すウィービング信号WS1’を生成するために、元のウィービング信号WS1のパラメータPR1を、該ウィービング信号WS1’のパラメータPR1’(振幅A1’、位相φ1’)へ調整する。なお、振幅A1を振幅A1’へ変化させる変化量は、波形WSbの位相φ1’が、φ1’=φ1+φvとなる値として、定められる。プロセッサ30は、調整後のパラメータPR1’(A1’、φ1’)を、パラメータ設定値PR1Vとしてメモリ32に記憶する。
図21に、図20に示すウィービング信号WS1’にフィルタ処理FR2を実行することによって得られるウィービング信号WS2を示す。なお、図21では、波形WSaに対応する、1波長目のウィービング信号WS2の波形を一点鎖線で示す一方、波形WSbに対応する、2波長目以降のウィービング信号WS2の波形を実線で示している。
図21に示すように、ウィービング信号WS2の位相φ2は、2波長目以降の波形において、ステップS1で受け付けたウィービング信号WS1の位相φ1に一致することになる。このようにパラメータPR1を調整することで、プロセッサ30は、位相φ1を再現することができる。
なお、プロセッサ30は、ウィービング動作において、ツール26を前後方向へ揺動させるのと同期して、該ツール26を上下方向へ揺動させてもよい。このようなウィービング動作について、図3及び図22を参照して説明する。図22に示す例では、プロセッサ30は、ツール26を、端点P1と端点P2との間で前後方向へ揺動させる間、移動経路WPの位置で距離δだけ上方へ変位させる一方、端点P1及び端点P2の位置でワークWの表面に当接させるように、ウィービング動作を実行している。
図22に示すような上下方向への揺動動作をロボット12に実行させるためのウィービング信号WS1zを、図23に示す。なお、図23の縦軸は、ツール26を上下方向へ揺動させる振幅Aを示し、横軸は、時間tを示す。図23に示すウィービング信号WS1zは、パラメータPR1として、正の振幅A1、周波数f1(=1/T1)、位相φ1(=0)、及び端点停止時間ts(=0)を有する。
このウィービング信号WS1zにフィルタ処理FR2を実行することにより得られるウィービング信号WS2zは、パラメータPR2として、振幅A2(<A1)を有し得る。図23に示すウィービング信号WS1zのパラメータPR1についても、上述の実施形態と同様の方法で、調整することができる。
そして、プロセッサ30は、上述のステップS11において、信号生成部44として機能して、上述のウィービング信号WS1と、図23に示すウィービング信号WS1zとをそれぞれ生成し、これらを加算することで、合成ウィービング信号WS1Sを生成し、フィルタ部48へ出力する。
本実施形態のように、ツール26を前後方向へ揺動させるのと同期して上下方向へ揺動させるウィービング動作を実行することで、溶接品質を向上させることができる。そして、オペレータが所望するウィービング信号WS1及びWS1zのパラメータPR1を再現することができるので、前後上下へ揺動させるウィービング動作を、任意に設計することができる。
なお、プロセッサ30は、フィルタ処理FR1のフィルタ時間τ1として、上述の固有フィルタ時間τaを用いてもよい。また、上述のステップS2において、プロセッサ30は、フィルタ時間τ2を、固有フィルタ時間τa(又は、許容フィルタ時間τb)に一義的に決定してもよい。
また、図7又は図18に示すフローから、ステップS2を省略してもよい。この場合において、オペレータは、入力装置38を操作して、所望のフィルタ時間τ2を入力してもよい。そして、プロセッサ30は、入力を受け付けたフィルタ時間τ2でフィルタ処理FR2を実行してもよい。この場合において、プロセッサ30は、オペレータから受け付けたフィルタ時間τ2が固有フィルタ時間τaよりも短い場合に、アラームを出力してもよい。
なお、上述の実施形態においては、プロセッサ30が、ステップS1において、優先順位POの入力を受け付ける場合について述べた。しかしながら、これに限らず、優先順位POのデータが予め定められて、メモリ32に格納されてもよい。また、優先順位POが設定されていなくてもよい。例えば、プロセッサ30は、上述のステップS6’又はS9において、第2条件CD2を満たすべく、全てのパラメータPR1について、対応するフィルタ処理後パラメータPR2が元のパラメータPR1と異なるのを許容するように、該全てのパラメータPR1を調整してもよい。
また、プロセッサ30は、ステップS1において、ウィービング信号WS1の波形の種類(三角波、台形波、鋸波、三角関数等)の入力を受け付けてもよい。また、ウィービング動作指令CM3を生成する構成は、図4に示す形態に限定されない。例えば、フィルタ部46を省略するとともに、フィルタ部48をウィービング動作指令生成部50の後段に設けてもよい。
この場合、主動作指令生成部42が生成した主動作指令CM1と、信号生成部44が生成したウィービング信号WS1、WS’とが、ウィービング動作指令生成部50で加算され、ウィービング動作指令CM3が生成される。そして、ウィービング動作指令生成部50が生成したウィービング動作指令CM3に、フィルタ部48でフィルタ処理FR2が実行され、サーボモータ28へ出力される。
また、上述の実施形態においては、装置70の機能が、制御装置14に実装される場合について述べた。しかしながら、これに限らず、装置70の機能は、制御装置14に通信可能に接続された他のコンピュータ(教示ペンダント、タブレット型PC、デスクトップ型PC等)に実装されてもよい。この場合、該他のコンピュータのプロセッサが、装置70として機能する。そして、該他のコンピュータのプロセッサが、信号生成部44として機能してウィービング信号WS1、WS1’を生成し、制御装置14に送信してもよい。
また、上述の実施形態においては、ツール26が溶接トーチであり、ワークWに溶接作業を実行する場合について述べた。しかしながら、これに限らず、ツール26は、例えば、ろう材送給装置(図示せず)から送給されたろう材を溶融させてワークWにろう付け作業を実行するように構成されてもよいし、又は、ワークWに対して如何なる作業を実行するように構成されてもよい。
また、ロボット12は、垂直多関節型ロボットに限らず、例えば、水平多関節型ロボット、パラレルリンク型ロボット等、ツール26を移動可能な如何なるタイプのロボットであってもよい。以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。