溶接ロボット制御装置
【課題】 予め教示された振幅で確実にかつ正確にウィービング動作させることのできる溶接ロボット制御装置を提供する。
【解決手段】 本発明の溶接ロボット制御装置20は、溶接ロボット10の各関節に設けられた複数の駆動モータ13をフィードバック制御で駆動することにより、補間点ごとに溶接トーチ14をウィービング動作させつつアークを発生させて溶接ロボット10に溶接を行わせるものであって、補間点ごとに、ウィービング動作しない場合の各関節の関節角度と、ウィービング動作する場合の各関節の関節角度との差を関節ごとにウィービング変位として算出し、駆動モータ13のサーボ制御定数と予め定めるウィービング周波数とに基づいて、駆動モータ13のフィードバック制御系におけるゲインを算出し、算出されたゲインの逆数を、ウィービング変位に乗じ、その値をウィービング動作しない場合の各関節の関節角度に加算することにより、補間点ごとに駆動モータ13に対する動作指令としての各関節の関節角度を算出するCPU21を備える。
【解決手段】 本発明の溶接ロボット制御装置20は、溶接ロボット10の各関節に設けられた複数の駆動モータ13をフィードバック制御で駆動することにより、補間点ごとに溶接トーチ14をウィービング動作させつつアークを発生させて溶接ロボット10に溶接を行わせるものであって、補間点ごとに、ウィービング動作しない場合の各関節の関節角度と、ウィービング動作する場合の各関節の関節角度との差を関節ごとにウィービング変位として算出し、駆動モータ13のサーボ制御定数と予め定めるウィービング周波数とに基づいて、駆動モータ13のフィードバック制御系におけるゲインを算出し、算出されたゲインの逆数を、ウィービング変位に乗じ、その値をウィービング動作しない場合の各関節の関節角度に加算することにより、補間点ごとに駆動モータ13に対する動作指令としての各関節の関節角度を算出するCPU21を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明は、ワークに対して溶接を行う溶接ロボットの制御装置に関するものである。
【背景技術】
【0002】
従来、ワークに対して溶接を行う多関節溶接ロボットにおいては、ウィービング動作と呼称される動作を行うものがある(例えば、特許文献1参照)。ウィービング動作とは、予め記憶された作業プログラムによって溶接ロボットの各軸を駆動モータによって回転駆動させることにより、溶接トーチを溶接進行方向に対して直交する方向に揺動させる動作をいう。
【0003】
このウィービング動作では、ティーチングプレイバック方式に基づいて溶接部の形状に沿って溶接トーチが直線補間動作又は円弧補間動作を行いつつ、溶接トーチのツールセンタポイント(TCP)を、予め教示された振幅、周波数、及び波形に基づいて移動させる。このウィービング動作が行われることによって、良好でかつ確実な溶接を実現することができる。
【特許文献1】特開平7−24574号公報。
【0004】
ところで、上記多関節溶接ロボットの制御においては、溶接ロボットの動特性を向上させるために、溶接ロボットの各アームを駆動するモータの制御定数をリアルタイムに変化させている。
【0005】
溶接ロボットの各関節の位置は、モータをフィードバック制御することにより制御されるが、例えば、溶接ロボットの姿勢が縮んでおり(すなわち複数のアームが延びておらず)、モータの負荷である慣性モーメントが小さい場合には、位置を制御するためのモータのフィードバック制御系におけるゲイン(以下、フィードバックゲインという。)を大きくし、各関節における位置の追従性を向上させている。逆に、複数のアームが延び、慣性モーメントが大きい場合には、位置制御用のフィードバックゲインを小さくし、各関節における位置の追従性をあえて悪化させ、残留振動の振幅を小さくするといった制御が行われている。
【発明の開示】
【発明が解決しようとする課題】
【0006】
ところが、上記のように、モータのフィードバック制御系における位置制御用のフィードバックゲインをリアルタイムに変化させる制御が行われると、各関節における位置の追従性能が変化することになるため、モータの回転駆動に依存しているウィービング動作に影響を及ぼし、予め教示された、ウィービング動作による振幅が変化してしまうといった問題点があった。
【0007】
また、多関節溶接ロボットの制御において、上記ウィービング動作は、溶接ロボットの複数の関節が合成動作することにより実現されている。例えばシリアルリンク機構の溶接ロボットにおけるウィービング動作では、溶接ロボットの関節間に干渉トルクが発生し、この干渉トルクによって、モータとアームとを連結する減速機がたわむことがある。そのため、各軸において本来回転すべき量(角度)が正確に得られないことがあり、予め教示された、ウィービング動作による振幅が遵守できないといった問題があった。
【0008】
本願発明は、上記した事情のもとで考え出されたものであって、予め教示された振幅で確実にかつ正確にウィービング動作させることのできる溶接ロボット制御装置を提供することを、その課題とする。
【課題を解決するための手段】
【0009】
上記の課題を解決するため、本願発明では、次の技術的手段を講じている。
【0010】
本願発明の第1の側面によって提供される溶接ロボット制御装置は、溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、前記サーボモータのサーボ制御定数と予め定めるウィービング周波数とに基づいて、前記サーボモータのフィードバック制御系におけるゲインを算出するゲイン算出手段と、前記ゲイン算出手段によって算出されたゲインの逆数を、前記ウィービング変位算出手段によって算出された前記ウィービング変位に乗じ、その値をウィービング動作しない場合の前記各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、を備えることを特徴としている(請求項1)。
【0011】
この構成によれば、モータのフィードバック制御系におけるゲインの逆数をウィービング変位の値に乗算し、それをウィービング動作を行わない場合の各関節における関節角度に加算し、これを各関節を駆動するモータの動作指令として各モータに与える。これにより、モータのフィードバック制御系におけるゲインが考慮された、ウィービング動作における適切な振幅を取得することができる。そのため、より正確な振幅でウィービング動作を行うことができる。
【0012】
好ましい実施の形態によれば、前記サーボ制御定数は、前記サーボモータの位置制御の遅れ系を表す時定数であるとよい(請求項2)。
【0013】
本願発明の第2の側面によって提供される溶接ロボット制御装置は、溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、前記関節の軸まわりに発生するトルクを関節毎に算出する第1トルク算出手段と、前記補間点ごとに前記ウィービング動作をしない場合に発生するトルクを算出する第2トルク算出手段と、前記第1トルク算出手段によって算出された、前記関節の軸まわりに発生するトルクの値と、前記第2トルク算出手段によって算出された、前記ウィービング動作をしない場合に発生するトルクの値とを差し引き、その差し引いた値を、予め定められた各関節におけるばね定数で除算し、その除算した値を、前記ウィービング動作する場合の各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、を備えることを特徴としている(請求項3)。
【0014】
この構成によれば、関節の軸まわりに発生するトルクからウィービング動作を行わない場合に発生するトルクを差し引き、それを各関節のばね定数で除算して、除算した値をウィービング動作する場合の各関節の関節角度に加え、これを各関節に駆動するモータの動作指令として各モータに与える。これにより、アーム間に発生する干渉トルクによる減速機のたわみ量を用いて各モータに与える各関節の関節角度を補正することができる。そのため、適切な振幅を有するウィービング動作を行うことができる。
【0015】
好ましい実施の形態によれば、前記第2トルク算出手段は、前記補間点ごとに、前記ウィービング動作の一周期毎に前記ウィービング動作の右端において発生するトルクと、前記ウィービング動作の左端において発生するトルクとの平均値を算出することにより、前記ウィービング動作をしない場合に発生するトルクを算出するとよい(請求項4)。
【0016】
本願発明のその他の特徴及び利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【発明を実施するための最良の形態】
【0017】
以下、本願発明の好ましい実施の形態を、添付図面を参照して具体的に説明する。
【0018】
図1は、本願発明に係るロボット制御装置が適用されるロボット制御システムを示す構成図である。このロボット制御システムでは、溶接ロボットに設けられた溶接トーチによってワーク(被溶接物)に対して溶接が行われる。
【0019】
ロボット制御システムは、溶接ロボット10と、ロボット制御装置20と、溶接電源装置30とによって大略構成されている。
【0020】
溶接ロボット10は、ワークWに対して例えばアーク溶接を自動で行うものである。溶接ロボット10は、フロア等の適当な箇所に固定されるベース部材11と、それに複数の軸を介して連結された複数のアーム12と、複数のアーム12の両端又は片端に設けられた複数の駆動モータ(サーボモータ)13(一部図示略)とによって構成されている。
【0021】
溶接ロボット10には、最も先端側に設けられたアーム12の先端部に、溶接トーチ14が設けられている。溶接トーチ14は、溶加材としての例えば直径1mm程度の溶接ワイヤ15をワークWの所定の溶接位置に導くものである。
【0022】
溶接ロボット10の上部には、ワイヤ送給装置16が設けられている。ワイヤ送給装置16は、溶接トーチ14に対して溶接ワイヤ15を送り出すためのものである。ワイヤ送給装置16は、溶接ワイヤ15が巻回された図示しないリールと、リールを回転させる送給モータ17とによって構成され、送給モータ17は、溶接電源装置30によって回転駆動される。
【0023】
ワイヤ送給装置16には、溶接ワイヤ15を案内するためのコイルライナ19が接続され、コイルライナ19の先端は、溶接トーチ14に接続されている。これにより、ワイヤ送給装置16によって送り出された溶接ワイヤ15は、コイルライナ19を介して溶接トーチ14に導かれる。溶接ワイヤ15は、溶接トーチ14から外部に突出して消耗電極として機能する。すなわち、溶接電源装置30によって溶接ワイヤ15の先端とワークWとの間にアークを発生させてその熱で溶接ワイヤ15を溶融させることにより、ワークWに対して溶接が施される。
【0024】
駆動モータ13は、ロボット制御装置20からの駆動信号によって回転駆動され、この各駆動モータ13が回転駆動されることにより、各アーム12が変位し、結果的に溶接トーチ14が上下前後左右に移動可能とされる。
【0025】
さらに、本実施形態では、各駆動モータ13が回転駆動されることにより、溶接トーチ14のウィービング動作が行われる。ウィービング動作とは、上述したように、溶接トーチ14を溶接進行方向に対して直交する方向に揺動させる動作をいう。本実施形態に係る溶接ロボット10は、図1及び図2に示すように、複数の関節を有する多関節の溶接ロボットであり、これら複数の関節を複合動作させることにより、溶接トーチ14が溶接進行方向に対して直交方向に揺動されるように制御される(図2の正弦波状の軌跡を参照)。なお、図2では、溶接ロボット10が3自由度の場合を示している。
【0026】
なお、駆動モータ13には、図示しないエンコーダが設けられている。エンコーダの出力は、ロボット制御装置20に与えられ、ロボット制御装置20では、エンコーダの出力によって溶接トーチ14の現在位置を認識するようになっている。
【0027】
ロボット制御装置20は、溶接ロボット10の動作を制御するためのものである。ロボット制御装置20は、予め記憶されている作業プログラム及び図示しないエンコーダからの現在位置情報等に基づいて、溶接ロボット10の各駆動モータ13を駆動制御して、溶接トーチ14をワークWの所定の溶接点に移動させる。また、ロボット制御装置20は、各駆動モータ13を駆動制御して、溶接トーチ14を揺動させることにより、上記ウィービング動作を実行する。
【0028】
溶接電源装置30は、図示しない溶接電源を備えており、溶接電源は溶接トーチ14とワークWとの間に高電圧の溶接電圧を供給するものである。また、溶接電源装置30は、所定のタイミングでワイヤ送給装置16の送給モータ17を駆動させる機能をも有している。
【0029】
図3は、ロボット制御装置20の内部構成及びその周辺装置を示すブロック図である。ロボット制御装置20は、CPU21、RAM22、ROM23、タイマ(TIMER)24、ハードディスク25、ティーチングペンダントI/F26、操作ボックスI/F27、及びサーボドライバI/F28を備えており、各部はバス(BUS)31によって相互に接続されている。
【0030】
ティーチングペンダントI/F26には、ティーチングペンダント33が接続され、操作ボックスI/F27には、操作ボックス34が接続されている。また、サーボドライバI/F28には、ロボット制御装置20の内部に設けられた複数のサーボドライバ35が接続され、サーボドライバ35には、溶接ロボット10に設けられた6つの駆動モータ13がそれぞれ接続されている。
【0031】
CPU21は、本ロボット制御装置20の制御中枢となるものであり、予め定められた作業プログラム、ティーチングペンダント33や操作ボックス34からの操作信号、あるいは図示しないエンコーダからの現在位置情報等に基づいて、所定のデータ処理を行い、バス31及びサーボドライバI/F28を介してサーボドライバ35に動作指令を与える。これにより、駆動モータ13が回転駆動され、溶接トーチ14が移動される。
【0032】
RAM22は、CPU21に対して作業領域を提供するものであり、計算データ等を一時的に記憶する。RAM22は、例えば後述する動作命令バッファ41、軌道バッファ42、補間点バッファ43、又は関節補間点バッファ44として機能する。
【0033】
ROM23は、溶接ロボット10の動作(衝突検出、停止処理等を含む)が定められた作業プログラム、この作業プログラムの実行条件を示すデータ、制御定数を示すデータ等を格納するものである。
【0034】
ハードディスク25は、溶接ロボット10の溶接作業が表された教示データを格納するものである。
【0035】
タイマ24は、予め定められた定期時刻ごとに同期信号をCPU21に対して発生するものである。同期信号は、CPU21がサーボドライバ35に対して動作指令信号を出力する際の更新タイミングとして用いられる。
【0036】
ティーチングペンダントI/F26は、ティーチングペンダント33とのインターフェースを司るものである。ティーチングペンダント33は、例えば表示装置33aとキーボード33bとを有し、溶接ロボット10の動作を手動で行う際にユーザによって操作されるものである。CPU21は、このティーチングペンダント33からの操作信号を受け取ることにより所定のデータ処理を行うとともに、ティーチングペンダント33に対して表示データを送ることにより、操作情報を表示させる。
【0037】
操作ボックスI/F27は、操作ボックス34とのインターフェースを司るものである。操作ボックス34は、自動運転モード又は手動モードの選択、起動、開始、停止等の各種操作をユーザによって可能にするものである。CPU21は、この操作ボックス34からの操作信号を受け取ることにより所定のデータ処理を行う。
【0038】
サーボドライバI/F28は、サーボドライバ35とのインターフェースを司るものである。サーボドライバ35は、CPU21からの動作指令信号に基づいて、6つの駆動モータ13をそれぞれ駆動制御するものである。
【0039】
図4は、CPU21及びRAM22の実際的な機能をブロックにして表した場合の構成図である。
【0040】
CPU21の機能としては、動作命令読み出し部36、軌道生成部37、補間点生成部38、関節補間点生成部39、及びサーボ出力部40によって表され、RAM22の機能としては、動作命令バッファ41、軌道バッファ42、補間点バッファ43、及び関節補間点バッファ44によって表される。なお、各バッファ41〜44は、FIFO(first-in first-out)バッファとして構成されており、先入れ及び先出しでデータが処理される。
【0041】
動作命令読み出し部36は、ハードディスク25に記憶される教示データから、溶接ロボット10の動作命令に関する情報(例えば座標、速度情報等のデータからなる軌道命令)を読み出し、動作命令バッファ41に格納する。
【0042】
軌道生成部37は、動作命令バッファ41から動作命令に関する情報(動作命令コマンド)を読み出し、それに基づいて溶接ロボット10の溶接トーチ14の作業軌道を三次元空間の直交座標上で計画する。軌道生成部37は、計画された軌道データを軌道バッファ42に格納する。
【0043】
補間点生成部38は、軌道バッファ42から軌道データを読み出し、その軌道データを、「補間周期」と呼称される所定時間毎に分割する。そして、補間周期毎に直交座標によって表される、溶接トーチ14が到達すべき位置、姿勢を示す補間点データを算出する。すなわち、軌道データは、溶接開始点から溶接終了点に至る溶接トーチ14の移動軌跡を複数の教示点によって表すとともに、教示点間の溶接トーチ14の移動方法を直線移動や円弧移動によって定義したものである。補間点生成部38は、隣接する教示点間において溶接トーチ14が通過すべき点とその点における溶接トーチ14の姿勢等のデータを補間周期毎に補間している。補間点生成部38は、算出した補間点データを補間点バッファ43に格納する。
【0044】
関節補間点生成部39は、溶接トーチ14の到達位置、姿勢を示す補間点データを、溶接ロボット10の各関節における関節角度を示すデータに逆変換する演算を行い、それを関節補間点バッファ44に一時的に記憶する。なお、本実施形態の特徴であるウィービング動作は、主にこの関節補間点生成部39において実現されるようになっている。
【0045】
関節補間点バッファ44に格納された、溶接ロボット10の各関節における関節角度を示すデータは、タイマ24によって発生される同期信号SYNCに同期してサーボ出力部40に通知される。そして、上記関節角度を示すデータは、サーボ出力部40から所定のタイミングでサーボドライバI/F28を介してサーボドライバ35へ各関節の位置指令(駆動モータ13に対する動作指令)として出力される。
【0046】
図5は、サーボドライバ35によるサーボ制御の概念を示すブロック図である。この図によると、溶接ロボット10の各関節における位置指令は、位置制御ブロック51に入力され、位置制御ブロック51の出力は、速度制御ブロック52に入力される。速度制御ブロック52の出力は、電流制御ブロック53に入力され、電流制御ブロック53の出力は、駆動モータ13に入力される。駆動モータ13の出力は、例えば減速器からなる減速機構のばね要素ブロック54を介して、負荷としてのアーム12に与えられる。
【0047】
駆動モータ13には、電流検出ブロック55が接続され、電流検出ブロック55において駆動モータ13に流れる電流が検出され、その値は電流制御ブロック53にフィードバックされる。また、駆動モータ13には、エンコーダ56が接続され、エンコーダ56によって現在の回転速度(アームの移動速度に対応)のデータが取得され、その回転速度データは、位置制御ブロック51と速度制御ブロック52にフィードバックされる。
【0048】
位置制御ブロック51では、フィードバックされた回転速度データが積分ブロック57によって積分されることにより位置データに変換されて減算器61に入力され、この減算器61により位置指令(関節角度)に対する現在の位置(関節角度)の誤差データが演算される。この誤差データは増幅器58により所定のゲインKpp(以下、位置フィードバックゲインという。)でレベル補正が行なわれた後、加算器62に入力される。
【0049】
また、位置制御ブロック51では、溶接ロボット10の各関節における位置指令のデータは、微分ブロック59によって微分されることにより速度データに変換され、さらに増幅器60により所定のゲインKff(以下、速度フィードフォワードゲインという。)でレベル補正が行なわれた後、加算器62に入力される。加算器62では速度フィードフォワードゲインKffから出力される速度データと、位置フィードバックゲインKppから出力される誤差データとが加算されて、上述した速度制御ブロック52に出力される。
【0050】
このように、溶接ロボット10の各関節における位置指令に対して駆動モータ13の動作をフィードバック制御させることにより、予め教示された教示データの再生動作をより正確に行うことができる。
【0051】
次に、本実施形態に係るウィービング動作に関する作用について、図6に示すフローチャート及び図7に示す基準座標系とツール座標系との関係を示す図を参照して説明する。
【0052】
本実施形態における特徴的なウィービング動作に関する制御は、主に関節補間点生成部39(図4参照)において実行される。すなわち、ステップS1において、関節補間点生成部39は、補間点バッファ43から補間点データIPiを読み出す。ここで、補間点データIPiとは、溶接開始位置から目標位置(溶接終了位置)に達するまでの間に存在する、溶接トーチ14の先端が移動すべき位置(溶接すべき位置を含む)、及びその位置における溶接トーチ14の姿勢を表したデータである。
【0053】
なお、溶接ロボット10には、各関節を制御するための座標系として図7に示すように、基準座標系とツール座標系とが設定されている。基準座標系は、溶接ロボット10の設置位置に固定的に設定されている。一方、ツール座標系は、溶接トーチ14の先端(ツールセンタポイント)に設定されたもので、溶接トーチ14の移動に伴って移動する。すなわち、ツール座標系の原点位置の基準座標系における位置は、溶接トーチ14の移動によって変化する。
【0054】
補間点データIPiは、溶接ロボット10の基準座標系(図7参照)から見た溶接トーチ14の位置及び姿勢、すなわち、ツール座標系の位置、姿勢を、基準座標系の座標値に変換して表したものである。補間点データIPiは、以下に示す行列式で表される。
【0055】
【数1】
【0056】
ここで、xiは基準座標系から見たツール座標系原点のX座標位置(mm)を示し、yiは基準座標系から見たツール座標系原点のY座標位置(mm)を示し、ziは基準座標系から見たツール座標系原点のZ座標位置(mm)を示し、aiは基準座標系から見たツール座標系のX軸の回転姿勢(rad)を示し、biは基準座標系から見たツール座標系のY軸の回転姿勢(rad)を示し、ciは基準座標系から見たツール座標系のZ軸の回転姿勢(rad)を示す。
【0057】
次いで、ステップS2において、関節補間点生成部39は、ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgを算出する。具体的には、直交座標によって表され、溶接トーチ14の到達位置及び姿勢を表す補間点データIPiを、溶接ロボット10の各関節における関節角度を示すデータに逆変換する。そして、溶接ロボット10の各関節における関節角度を示すデータをRAM22(関節補間点バッファ44)に記憶する。なお、多関節溶接ロボットの逆演算アルゴリズムは、プレイバックティーチングシステムで一般的に用いられる技術であるため、ここでは詳細な説明は省略する。ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgは、以下に示す行列式で表される。
【0058】
【数2】
【0059】
ここで、nは溶接ロボット10の関節数を示し、ANGorg1は溶接ロボット10の第1関節の関節角度(rad)を示し、ANGorg2は溶接ロボット10の第2関節の関節角度(rad)を示し、ANGorgnは溶接ロボット10の第n関節の関節角度(rad)を示す。
【0060】
次に、ステップS3において、関節補間点生成部39は、ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvを算出する。具体的には、直交座標によって表され、溶接トーチ14の到達位置及び姿勢を表す補間点データIPiにウィービング変位を加味し、それを溶接ロボット10の各関節における関節角度を示すデータに逆変換する。そして、それをRAM22(関節補間点バッファ44)に記憶する。ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvは、以下に示す行列式で表される。
【0061】
【数3】
【0062】
ここで、nは溶接ロボット10の関節数を示し、ANGwv1は溶接ロボット10の第1関節の関節角度(rad)を示し、ANGwv2は溶接ロボット10の第2関節の関節角度(rad)を示し、ANGwvnは溶接ロボット10の第n関節の関節角度(rad)を示す。
【0063】
次いで、ステップS4において、ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgと、ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvとの差分を求める。そして、その差分を、関節毎のウィービング変位ANGampとして、RAM22(関節補間点バッファ44)に記憶する。
【0064】
図8は、ウィービング動作を行わない場合の補間点(白丸参照)と、ウィービング動作を行う場合の補間点(黒丸参照)との違いを示した図である。この図の例では、サイン波形のウィービングパターンが溶接進行に対して重畳されている形となっている。なお、ウィービングパターンの生成方法は、公知技術であるため、ここではその説明を省略する。溶接ロボット10の関節毎のウィービング変位ANGampは、以下に示す行列式で表される。
【0065】
【数4】
【0066】
ここで、nは溶接ロボット10の関節数を示し、ANGamp1は溶接ロボット10の第1関節の関節角度(rad)を示し、ANGamp2は溶接ロボット10の第2関節の関節角度(rad)を示し、ANGampnは溶接ロボット10の第n関節の関節角度(rad)を示す。そして、ANGamp1、ANGamp2、及びANGampnは、それぞれ次式で表される。
【0067】
【数5】
【0068】
次に、ステップS5において、溶接ロボット10の各関節を駆動する駆動モータ13のサーボ制御定数と、予め指定されたウィービング周波数とに基づいて、フィードバック制御系における各駆動モータ13のゲインGAINを算出する。ゲインGAINは、以下に示す行列式で表される。
【0069】
【数6】
【0070】
ここで、nは溶接ロボット10の関節数を示し、GAIN1は溶接ロボット10の第1関節のゲイン(無次元)を示し、GAIN2は溶接ロボット10の第2関節のゲイン(無次元)を示し、GAINnは溶接ロボット10の第n関節のゲイン(無次元)を示す。
【0071】
以下、例えば溶接ロボット10の第j関節についてのゲインGAINを求める手順を説明する。
【0072】
駆動モータ13のゲインの求め方は、サーボ制御方法や、サーボ演算の仕方によって異なるが、ここでは図5に示したような一般的な位置フィードバックと速度フィードフォワードとの2自由度制御系を例にとって説明する。なお、図5に示す例では、速度ループや電流ループのフィードバック制御系をも含めているが、サーボによる遅れ系は位置ループが支配的な役割を示しており、ここでは速度ループや電流ループは不要として考える。
【0073】
第j関節を駆動する駆動モータ13の位置フィードバックゲインKppjと、速度フィードフォワードゲインKffjは、サーボ制御で一般に用いられる値であり既知の値である。これらのゲインKppjやゲインKffjは、溶接ロボット10の姿勢や動作モードによりその値が変更されることが多いが、その変更指令は、ロボット制御装置20のCPU21から発せられるものであるため、関節補間点生成部39においても読み取り可能な値である。
【0074】
まず、位置フィードバックゲインKppjと速度フィードフォワードゲインKffjとを用いて、第j関節を駆動する駆動モータ13の位置制御の遅れ系を表す時定数TSj(sec)を、以下の式によって算出する。この場合、時定数TSjは、駆動モータ13のサーボ制御定数として位置付けされる。
【0075】
【数7】
【0076】
次いで、予め定められたウィービング周波数FRQと時定数TSjとに基づいて、第j関節のゲインGAINjを以下の式によって算出する。
【0077】
【数8】
【0078】
ここで、GAINjは、第j関節を駆動するモータのゲイン [無次元]を示し、ウィービング周波数FRQは、教示されたウィービング周波数(Hz)を示す。なお、ティーチングプレイバックシステムを採用する溶接ロボット10において、ウィービング周波数FRQは、予め教示されるデータであり、溶接ロボット10の教示位置と同様に、ハードディスク25(図3参照)に記憶され、再生動作時に読み出されるものである。
【0079】
上式を用いて、例えばjを1からn(nは溶接ロボット10の関節数)まで変化させることで、溶接ロボット10の全関節におけるゲインGAINを算出する。
【0080】
次に、ステップS6において、溶接ロボット10の各関節における位置指令(駆動モータ13に対する動作指令)として、溶接ロボット10の各関節における補正後の関節角度ANGcompを算出する。具体的には、ゲインGAINjの逆数をウィービング変位ANGampに関節毎に乗じる。乗じた後の値を、ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgに加算する。溶接ロボット10の各関節における補正後の関節角度ANGcompは、以下に示す行列式で表される。
【0081】
【数9】
【0082】
ここで、nは溶接ロボット10の関節数を示し、ANGcomp1は溶接ロボット10の第1関節の補正後の関節角度(rad)を示し、ANGcomp2は溶接ロボット10の第2関節の補正後の関節角度(rad)を示し、ANGcompnは溶接ロボット10の第n関節の補正後の関節角度(rad)を示す。そして、ANGcomp1、ANGcomp2、及びANGcompnは、それぞれ次式で表される。
【0083】
【数10】
【0084】
ここで、GAIN1は、第1関節を駆動する駆動モータ13のゲインを示し、GAIN2は、第1関節を駆動する駆動モータ13のゲインを示し、GAINnは、第n関節を駆動する駆動モータ13のゲインを示す。
【0085】
このように、駆動モータ13のフィードバック制御系におけるゲインGAINの逆数をウィービング変位ANGampの値に乗算し、それをウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgに加算し、これを溶接ロボット10の各関節における位置指令として、各駆動モータ13に与える。これにより、駆動モータ13のフィードバック制御系におけるゲインGAINが考慮された、ウィービング動作における適切な振幅を取得することができる。したがって、より正確な振幅でウィービング動作を行うことができる。
【0086】
ところで、上記した多関節溶接ロボットにおけるウィービング動作では、溶接ロボットの関節間に発生する干渉トルクによって、駆動モータ13とアーム12とを連結する図示しない減速機がたわむことがあり、各軸において本来回転すべき量(角度)が正確に得られないことがある。そのため、予め教示された、ウィービング動作における振幅が遵守できないといった問題があった。
【0087】
しかしながら、以下に示すように、ウィービング動作における減速機のたわみ量を求め、それに基づいてウィービング動作を行う場合の溶接ロボット10の各関節における関節角度を補正するようにすれば、正確な振幅を有するウィービング動作を行うことができる。以下、詳述する。
【0088】
図9は、この実施形態に係る作用を説明するためのフローチャートである。このフローチャートに係る処理は、上記した実施形態と同様、関節補間点生成部39によって主に実施されるものである。なお、図9に示すステップS11〜ステップS14の処理は、図6に示したステップS1〜ステップS4と同様であるため、以下ではそれらの説明を省略し、ステップS15〜S17について説明する。
【0089】
ステップS15において、溶接ロボット10の関節の軸まわりに発生するトルクTRQjを関節毎に求める。より具体的には、溶接ロボット10の機構パラメータ(関節に連結されるアーム12の重心位置、質量、慣性テンソル、長さ)、溶接ロボット10の関節位置ANGwvj、関節角速度VELwvj、及び関節角加速度ACCwvjを用いて逆動力学演算を行うことにより、上記トルクTRQjを求める。なお、トルクTRQj、関節位置ANGwvj、関節角速度VELwvj、及び関節角加速度ACCwvjにおける添え字jは、溶接ロボット10の関節番号を表すものである。
【0090】
一般に、各関節に発生するトルクは、溶接ロボット10の機構パラメータ(関節に連結されるアーム12の重心位置、質量、慣性テンソル、長さ)と、各関節の位置、角速度、角加速度とに基づいて、次式による演算によって求められることが知られており、これを「逆動力学モデル」という。
【0091】
【数11】
【0092】
ここで、上式の各項は、表1に示す意味を有する。
【0093】
【表1】
【0094】
上記(1) 式に示した逆動力学モデルは、慣性行列H、粘性行列C及び重力行列Gから構成され、溶接ロボット10の関節数がnの場合、慣性行列Hは、n×nの対称行列で表され、溶接ロボット10の各関節の角加速度により関節自身に発生するトルク、及び他の関節の角加速度により発生する干渉トルクを示すものである。粘性行列Cは、n×1行列で表され、溶接ロボット10の各関節の角速度により生じる遠心力、及びコリオリ力から成るトルクを示すものである。重力行列Gは、n×3行列で表され、重力加速度の影響により発生するトルクを示すものである。
【0095】
ここで、溶接ロボット10の機構パラメータは、表2に示す4つの項目から構成される。なお、表2中の個数は、関節に連結されるアーム1つあたりの値である。
【0096】
【表2】
【0097】
なお、慣性テンソルIは、物体(例えば溶接ロボット10のアーム12)の回転し難さを示すのに一般的に用いられ、公知の通り、表2中の3×3の対称行列で表される。そして、その対角成分は溶接ロボット10の各関節の慣性モーメントIx,Iy,Izを、その他の成分は慣性乗積Ixy,Iyz,Izxの負の値を表す。
【0098】
また、慣性モーメントIx,Iy,Izは、物体の回り難さ及び止め難さを表すものであり、例えば次式により求められる。
【0099】
【数12】
【0100】
さらに、慣性乗積Ixy,Iyz,Izxは、物体が回転運動を行っているとき、その運動を乱すモーメントを表すものであり、次式により求められる。
【0101】
【数13】
【0102】
ここで、dmは微小体積の質量を示す。なお、式中のx,y,zは、所定のリンク座標系を基準として表される。基本的なリンク座標系について、図10及び図11を参照して説明すると、例えば、第2関節と第3関節との間に伸張する第2リンクL2(アームに相当)においては、第2関節の回転中心を原点として、第2関節に割り当てられるリンク座標が定められ、そのx方向は第2リンクL2の長さの方向であり、z方向は第2関節の回転方向であり、y方向は右手座標系の方向である。
【0103】
図10及び図11に示した第2リンクL2の慣性テンソルIの基準座標は、第2関節に割り当てられたリンク座標系を第2リンクL2の重心位置に移動したときの座標系とされる。他の関節についても同様に定義される。
【0104】
溶接ロボット10の機構パラメータは、溶接ロボット10の機構やアーム12の形状及び材質から予め求めておくことが可能な既知の固定値である。そのため、各関節に発生するトルクTRQjは、各関節の関節位置ANGwvj、関節速度VELwvj、及び関節加速度ACCwvjに基づいて演算により求めることができる。
【0105】
すなわち、慣性行列H、粘性行列C及び重力行列Gの演算方法については、公知であるため、ここでの詳細な説明は省略する。例えば溶接ロボット10が3つの関節からなる場合、慣性行列H、粘性行列C、及び重力行列Gは、以下の式で表される。
【0106】
【数14】
【0107】
上記の各式の各構成要素は、表2に示した機構パラメータ、関節位置θ、関節速度θdのみから構成され、θ、θd以外はすべて既知の値である。関節位置θには、ステップS13(図9参照)において算出されたウィービング動作を行う場合の各関節の関節角度ANGwvを当て嵌めることができる。また、関節速度θdには、補間周期毎に算出され、ウィービング動作を行う場合の各関節の関節角度ANGwvを一階微分することで算出される関節角速度VELwvを当て嵌めることができる。したがって、ウィービング動作を行う場合の各関節における関節位置ANGwv、及び関節角速度VELwvをそれぞれθ、及びθdに代入することにより、上記(1) 式中の慣性行列H、粘性行列C及び重力行列Gが算出される。θ、θd、及び関節角速度VELwvは、次式で表される。
【0108】
【数15】
【0109】
ここで、nは溶接ロボット10の関節数を示し、VELwv1は溶接ロボット10の第1関節の関節角速度(rad/sec)を示し、VELwv2は溶接ロボット10の第2関節の関節角速度(rad/sec)を示し、VELwvnは溶接ロボット10の第n関節の関節角速度(rad/sec)を示す。
【0110】
式(1) 中の重力加速度ベクトルgは、重力加速度が働く方向を示すベクトルであるから、これも溶接ロボット10の設置姿勢より予め定めることができる。
【0111】
式(1) 中の関節加速度θddは、補間周期毎に算出されるウィービング動作を行う場合の各関節の関節角度ANGwvを二階微分することで算出される関節加速度ACCwvを当て嵌めることができる。したがって、下式のように関節角加速度ACCwvを設定することにより、上記(1) 式で表される逆動力学モデルに基づいて、指定されたウィービング動作を実現するために各関節が発生すべきトルクTRQを算出する。θdd、及び関節角加速度ACCwvは、次式で表される。
【0112】
【数16】
【0113】
ここで、nは溶接ロボット10の関節数を示し、ACCwv1は溶接ロボット10の第1関節の関節角加速度(rad/sec2)を示し、ACCwv2は溶接ロボット10の第2関節の関節角加速度(rad/sec2)を示し、ACCwvnは溶接ロボット10の第n関節の関節角加速度(rad/sec2)を示す。
【0114】
以上より、式(1) は、次式で表される。
【0115】
【数17】
【0116】
また、トルクTRQは、次式で表される。
【0117】
【数18】
【0118】
ここで、nは溶接ロボット10の関節数を示し、TRQ1は溶接ロボット10の第1関節の発生トルク(N・m)を示し、TRQ2は溶接ロボット10の第2関節の発生トルク(N・m)を示し、TRQnは溶接ロボット10の第n関節の発生トルク(N・m)を示す。
【0119】
上式により算出される各関節におけるトルクTRQは、関節を加速するために必要なトルクだけでなく、他の関節における関節速度や関節加速度により受ける干渉トルクをも含んでいる。
【0120】
図12は、補間周期毎に算出される、ウィービング動作する場合の関節角度ANGwv、各関節における関節速度VELwv及び関節加速度ACCwvの関係を示す図である。
【0121】
次に、ステップS16において、ウィービング動作1周期毎に発生するトルクの平均値を算出する。具体的には、図13に示すように、ウィービング動作における右端点での発生トルクTRQrjと、ウィービング動作における左端点での発生トルクTRQljとを算出し、さらにそれらの平均値を算出し、その平均値をウィービング動作を行わない場合に発生するトルクTRQavejとして、RAM22に記憶する。
【0122】
【数19】
【0123】
ここで、nは溶接ロボット10の関節数を示し、TRQr1は溶接ロボット10の第1関節の右端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQr2は溶接ロボット10の第2関節の右端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQrnは溶接ロボット10の第n関節の右端点におけるウィービング動作時の発生トルク(N・m)を示す。
【0124】
【数20】
【0125】
ここで、nは溶接ロボット10の関節数を示し、TRQl1は溶接ロボット10の第1関節の左端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQl2は溶接ロボット10の第2関節の左端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQlnは溶接ロボット10の第n関節の左端点におけるウィービング動作時の発生トルク(N・m)を示す。
【0126】
【数21】
【0127】
ここで、nは溶接ロボット10の関節数を示し、TRQave1は溶接ロボット10の第1関節の平均トルク(N・m)を示し、TRQave2は溶接ロボット10の第2関節の平均トルク(N・m)を示し、TRQavenは溶接ロボット10の第n関節の平均トルク(N・m)を示す。
【0128】
そして、TRQave1、TRQave2、及びTRQavenは、それぞれ次式で表される。
【0129】
【数22】
【0130】
なお、上記では、ウィービング動作の1周期における平均トルクTRQaveを、ウィービング動作の左右端点における平均を算出することによって求めたが、この方法に代えて、1周期内の全サンプリング点の平均を算出することにより求めるようにしてもよい。
【0131】
次に、ステップS17において、ウィービング動作により発生するトルクによって生じる、駆動モータ13とアーム12とを連結する図示しない減速機のたわみ量を、ウィービング動作における振幅が変化する量として算出し、それを用いてウィービング動作を行う場合の溶接ロボット10の各関節における関節角度を補正する。
【0132】
具体的には、減速機のたわみ量は、先に算出した各関節に発生するトルクTRQから、ウィービング動作の1周期における平均トルクTRQaveを差し引くことで、ウィービング動作によって発生したトルクを抽出し、この値を、溶接ロボット10の各関節におけるばね定数Kjで除算することにより算出する。
【0133】
そして、このたわみ量を、ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvに加算することにより、それを溶接ロボット10の各関節における位置指令(駆動モータ13に対する動作指令)として、溶接ロボット10の各関節における補正後の関節角度ANGcompjを算出する。補正後の関節角度ANGcompj、及びばね定数Kは、次式で表される。
【0134】
【数23】
【0135】
ここで、nは溶接ロボット10の関節数を示し、K1は溶接ロボット10の第1関節のばね定数(rad/N・m)を示し、K2は溶接ロボット10の第2関節のばね定数(rad/N・m)を示し、Knは溶接ロボット10の第n関節のばね定数(rad/N・m)を示す。上記ばね定数Kは、使用する減速機に基づいて既知とすることが可能な定数であり、事前にハードディスク25内に記憶される。
【0136】
このように、関節の軸まわりに発生するトルクTRQからウィービング動作を行わない場合に発生するトルクTRQaveを差し引き、それを各関節のばね定数Kで除算して、除算した値をウィービング動作を行う場合の各関節の関節角度ANGwvに加え、これを各関節に駆動する駆動モータ13の動作指令として各駆動モータ13に与える。これにより、アーム12間に発生する干渉トルクによる図示しない減速機のたわみ量を用いて各駆動モータ13に与える各関節の関節角度ANGwvを補正することができる。そのため、適切な振幅を有するウィービング動作を行うことができる。
【0137】
もちろん、この発明の範囲は上述した実施の形態に限定されるものではない。
【図面の簡単な説明】
【0138】
【図1】本願発明に係るロボット制御装置が適用されるロボット制御システムを示す構成図である。
【図2】ウィービング動作を説明するための図である。
【図3】ロボット制御装置の内部構成及びその周辺装置を示すブロック図である。
【図4】CPU及びRAMの実際的な機能をブロックにして表した場合の構成図である。
【図5】サーボドライバによるサーボ制御の概念を示すブロック図である。
【図6】ウィービング動作における作用を説明するためのフローチャートである。
【図7】溶接ロボットの基準座標系とツール座標系との関係を示す図である。
【図8】ウィービング動作を行わない場合の補間点と、ウィービング動作を行う場合の補間点との違いを示した図である。
【図9】ウィービング動作における他の作用を説明するためのフローチャートである。
【図10】溶接ロボットにおけるリンク及び関節の関係を示す図である。
【図11】第2リンクと第2関節のリンク座標系の関係を示す図である。
【図12】ウィービング動作する場合の関節角度、各関節における関節速度及び関節加速度の関係を示す図である。
【図13】ウィービングパターンと時間との関係を示す図である。
【符号の説明】
【0139】
10 溶接ロボット
12 アーム
13 駆動モータ
14 溶接トーチ
15 溶接ワイヤ
20 ロボット制御装置
21 CPU
22 RAM
30 溶接電源装置
35 サーボドライバ
39 関節補間点生成部
44 関節補間点バッファ
51 位置制御ブロック
58 位置フィードバックゲイン
W ワーク(被溶接物)
【技術分野】
【0001】
本願発明は、ワークに対して溶接を行う溶接ロボットの制御装置に関するものである。
【背景技術】
【0002】
従来、ワークに対して溶接を行う多関節溶接ロボットにおいては、ウィービング動作と呼称される動作を行うものがある(例えば、特許文献1参照)。ウィービング動作とは、予め記憶された作業プログラムによって溶接ロボットの各軸を駆動モータによって回転駆動させることにより、溶接トーチを溶接進行方向に対して直交する方向に揺動させる動作をいう。
【0003】
このウィービング動作では、ティーチングプレイバック方式に基づいて溶接部の形状に沿って溶接トーチが直線補間動作又は円弧補間動作を行いつつ、溶接トーチのツールセンタポイント(TCP)を、予め教示された振幅、周波数、及び波形に基づいて移動させる。このウィービング動作が行われることによって、良好でかつ確実な溶接を実現することができる。
【特許文献1】特開平7−24574号公報。
【0004】
ところで、上記多関節溶接ロボットの制御においては、溶接ロボットの動特性を向上させるために、溶接ロボットの各アームを駆動するモータの制御定数をリアルタイムに変化させている。
【0005】
溶接ロボットの各関節の位置は、モータをフィードバック制御することにより制御されるが、例えば、溶接ロボットの姿勢が縮んでおり(すなわち複数のアームが延びておらず)、モータの負荷である慣性モーメントが小さい場合には、位置を制御するためのモータのフィードバック制御系におけるゲイン(以下、フィードバックゲインという。)を大きくし、各関節における位置の追従性を向上させている。逆に、複数のアームが延び、慣性モーメントが大きい場合には、位置制御用のフィードバックゲインを小さくし、各関節における位置の追従性をあえて悪化させ、残留振動の振幅を小さくするといった制御が行われている。
【発明の開示】
【発明が解決しようとする課題】
【0006】
ところが、上記のように、モータのフィードバック制御系における位置制御用のフィードバックゲインをリアルタイムに変化させる制御が行われると、各関節における位置の追従性能が変化することになるため、モータの回転駆動に依存しているウィービング動作に影響を及ぼし、予め教示された、ウィービング動作による振幅が変化してしまうといった問題点があった。
【0007】
また、多関節溶接ロボットの制御において、上記ウィービング動作は、溶接ロボットの複数の関節が合成動作することにより実現されている。例えばシリアルリンク機構の溶接ロボットにおけるウィービング動作では、溶接ロボットの関節間に干渉トルクが発生し、この干渉トルクによって、モータとアームとを連結する減速機がたわむことがある。そのため、各軸において本来回転すべき量(角度)が正確に得られないことがあり、予め教示された、ウィービング動作による振幅が遵守できないといった問題があった。
【0008】
本願発明は、上記した事情のもとで考え出されたものであって、予め教示された振幅で確実にかつ正確にウィービング動作させることのできる溶接ロボット制御装置を提供することを、その課題とする。
【課題を解決するための手段】
【0009】
上記の課題を解決するため、本願発明では、次の技術的手段を講じている。
【0010】
本願発明の第1の側面によって提供される溶接ロボット制御装置は、溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、前記サーボモータのサーボ制御定数と予め定めるウィービング周波数とに基づいて、前記サーボモータのフィードバック制御系におけるゲインを算出するゲイン算出手段と、前記ゲイン算出手段によって算出されたゲインの逆数を、前記ウィービング変位算出手段によって算出された前記ウィービング変位に乗じ、その値をウィービング動作しない場合の前記各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、を備えることを特徴としている(請求項1)。
【0011】
この構成によれば、モータのフィードバック制御系におけるゲインの逆数をウィービング変位の値に乗算し、それをウィービング動作を行わない場合の各関節における関節角度に加算し、これを各関節を駆動するモータの動作指令として各モータに与える。これにより、モータのフィードバック制御系におけるゲインが考慮された、ウィービング動作における適切な振幅を取得することができる。そのため、より正確な振幅でウィービング動作を行うことができる。
【0012】
好ましい実施の形態によれば、前記サーボ制御定数は、前記サーボモータの位置制御の遅れ系を表す時定数であるとよい(請求項2)。
【0013】
本願発明の第2の側面によって提供される溶接ロボット制御装置は、溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、前記関節の軸まわりに発生するトルクを関節毎に算出する第1トルク算出手段と、前記補間点ごとに前記ウィービング動作をしない場合に発生するトルクを算出する第2トルク算出手段と、前記第1トルク算出手段によって算出された、前記関節の軸まわりに発生するトルクの値と、前記第2トルク算出手段によって算出された、前記ウィービング動作をしない場合に発生するトルクの値とを差し引き、その差し引いた値を、予め定められた各関節におけるばね定数で除算し、その除算した値を、前記ウィービング動作する場合の各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、を備えることを特徴としている(請求項3)。
【0014】
この構成によれば、関節の軸まわりに発生するトルクからウィービング動作を行わない場合に発生するトルクを差し引き、それを各関節のばね定数で除算して、除算した値をウィービング動作する場合の各関節の関節角度に加え、これを各関節に駆動するモータの動作指令として各モータに与える。これにより、アーム間に発生する干渉トルクによる減速機のたわみ量を用いて各モータに与える各関節の関節角度を補正することができる。そのため、適切な振幅を有するウィービング動作を行うことができる。
【0015】
好ましい実施の形態によれば、前記第2トルク算出手段は、前記補間点ごとに、前記ウィービング動作の一周期毎に前記ウィービング動作の右端において発生するトルクと、前記ウィービング動作の左端において発生するトルクとの平均値を算出することにより、前記ウィービング動作をしない場合に発生するトルクを算出するとよい(請求項4)。
【0016】
本願発明のその他の特徴及び利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【発明を実施するための最良の形態】
【0017】
以下、本願発明の好ましい実施の形態を、添付図面を参照して具体的に説明する。
【0018】
図1は、本願発明に係るロボット制御装置が適用されるロボット制御システムを示す構成図である。このロボット制御システムでは、溶接ロボットに設けられた溶接トーチによってワーク(被溶接物)に対して溶接が行われる。
【0019】
ロボット制御システムは、溶接ロボット10と、ロボット制御装置20と、溶接電源装置30とによって大略構成されている。
【0020】
溶接ロボット10は、ワークWに対して例えばアーク溶接を自動で行うものである。溶接ロボット10は、フロア等の適当な箇所に固定されるベース部材11と、それに複数の軸を介して連結された複数のアーム12と、複数のアーム12の両端又は片端に設けられた複数の駆動モータ(サーボモータ)13(一部図示略)とによって構成されている。
【0021】
溶接ロボット10には、最も先端側に設けられたアーム12の先端部に、溶接トーチ14が設けられている。溶接トーチ14は、溶加材としての例えば直径1mm程度の溶接ワイヤ15をワークWの所定の溶接位置に導くものである。
【0022】
溶接ロボット10の上部には、ワイヤ送給装置16が設けられている。ワイヤ送給装置16は、溶接トーチ14に対して溶接ワイヤ15を送り出すためのものである。ワイヤ送給装置16は、溶接ワイヤ15が巻回された図示しないリールと、リールを回転させる送給モータ17とによって構成され、送給モータ17は、溶接電源装置30によって回転駆動される。
【0023】
ワイヤ送給装置16には、溶接ワイヤ15を案内するためのコイルライナ19が接続され、コイルライナ19の先端は、溶接トーチ14に接続されている。これにより、ワイヤ送給装置16によって送り出された溶接ワイヤ15は、コイルライナ19を介して溶接トーチ14に導かれる。溶接ワイヤ15は、溶接トーチ14から外部に突出して消耗電極として機能する。すなわち、溶接電源装置30によって溶接ワイヤ15の先端とワークWとの間にアークを発生させてその熱で溶接ワイヤ15を溶融させることにより、ワークWに対して溶接が施される。
【0024】
駆動モータ13は、ロボット制御装置20からの駆動信号によって回転駆動され、この各駆動モータ13が回転駆動されることにより、各アーム12が変位し、結果的に溶接トーチ14が上下前後左右に移動可能とされる。
【0025】
さらに、本実施形態では、各駆動モータ13が回転駆動されることにより、溶接トーチ14のウィービング動作が行われる。ウィービング動作とは、上述したように、溶接トーチ14を溶接進行方向に対して直交する方向に揺動させる動作をいう。本実施形態に係る溶接ロボット10は、図1及び図2に示すように、複数の関節を有する多関節の溶接ロボットであり、これら複数の関節を複合動作させることにより、溶接トーチ14が溶接進行方向に対して直交方向に揺動されるように制御される(図2の正弦波状の軌跡を参照)。なお、図2では、溶接ロボット10が3自由度の場合を示している。
【0026】
なお、駆動モータ13には、図示しないエンコーダが設けられている。エンコーダの出力は、ロボット制御装置20に与えられ、ロボット制御装置20では、エンコーダの出力によって溶接トーチ14の現在位置を認識するようになっている。
【0027】
ロボット制御装置20は、溶接ロボット10の動作を制御するためのものである。ロボット制御装置20は、予め記憶されている作業プログラム及び図示しないエンコーダからの現在位置情報等に基づいて、溶接ロボット10の各駆動モータ13を駆動制御して、溶接トーチ14をワークWの所定の溶接点に移動させる。また、ロボット制御装置20は、各駆動モータ13を駆動制御して、溶接トーチ14を揺動させることにより、上記ウィービング動作を実行する。
【0028】
溶接電源装置30は、図示しない溶接電源を備えており、溶接電源は溶接トーチ14とワークWとの間に高電圧の溶接電圧を供給するものである。また、溶接電源装置30は、所定のタイミングでワイヤ送給装置16の送給モータ17を駆動させる機能をも有している。
【0029】
図3は、ロボット制御装置20の内部構成及びその周辺装置を示すブロック図である。ロボット制御装置20は、CPU21、RAM22、ROM23、タイマ(TIMER)24、ハードディスク25、ティーチングペンダントI/F26、操作ボックスI/F27、及びサーボドライバI/F28を備えており、各部はバス(BUS)31によって相互に接続されている。
【0030】
ティーチングペンダントI/F26には、ティーチングペンダント33が接続され、操作ボックスI/F27には、操作ボックス34が接続されている。また、サーボドライバI/F28には、ロボット制御装置20の内部に設けられた複数のサーボドライバ35が接続され、サーボドライバ35には、溶接ロボット10に設けられた6つの駆動モータ13がそれぞれ接続されている。
【0031】
CPU21は、本ロボット制御装置20の制御中枢となるものであり、予め定められた作業プログラム、ティーチングペンダント33や操作ボックス34からの操作信号、あるいは図示しないエンコーダからの現在位置情報等に基づいて、所定のデータ処理を行い、バス31及びサーボドライバI/F28を介してサーボドライバ35に動作指令を与える。これにより、駆動モータ13が回転駆動され、溶接トーチ14が移動される。
【0032】
RAM22は、CPU21に対して作業領域を提供するものであり、計算データ等を一時的に記憶する。RAM22は、例えば後述する動作命令バッファ41、軌道バッファ42、補間点バッファ43、又は関節補間点バッファ44として機能する。
【0033】
ROM23は、溶接ロボット10の動作(衝突検出、停止処理等を含む)が定められた作業プログラム、この作業プログラムの実行条件を示すデータ、制御定数を示すデータ等を格納するものである。
【0034】
ハードディスク25は、溶接ロボット10の溶接作業が表された教示データを格納するものである。
【0035】
タイマ24は、予め定められた定期時刻ごとに同期信号をCPU21に対して発生するものである。同期信号は、CPU21がサーボドライバ35に対して動作指令信号を出力する際の更新タイミングとして用いられる。
【0036】
ティーチングペンダントI/F26は、ティーチングペンダント33とのインターフェースを司るものである。ティーチングペンダント33は、例えば表示装置33aとキーボード33bとを有し、溶接ロボット10の動作を手動で行う際にユーザによって操作されるものである。CPU21は、このティーチングペンダント33からの操作信号を受け取ることにより所定のデータ処理を行うとともに、ティーチングペンダント33に対して表示データを送ることにより、操作情報を表示させる。
【0037】
操作ボックスI/F27は、操作ボックス34とのインターフェースを司るものである。操作ボックス34は、自動運転モード又は手動モードの選択、起動、開始、停止等の各種操作をユーザによって可能にするものである。CPU21は、この操作ボックス34からの操作信号を受け取ることにより所定のデータ処理を行う。
【0038】
サーボドライバI/F28は、サーボドライバ35とのインターフェースを司るものである。サーボドライバ35は、CPU21からの動作指令信号に基づいて、6つの駆動モータ13をそれぞれ駆動制御するものである。
【0039】
図4は、CPU21及びRAM22の実際的な機能をブロックにして表した場合の構成図である。
【0040】
CPU21の機能としては、動作命令読み出し部36、軌道生成部37、補間点生成部38、関節補間点生成部39、及びサーボ出力部40によって表され、RAM22の機能としては、動作命令バッファ41、軌道バッファ42、補間点バッファ43、及び関節補間点バッファ44によって表される。なお、各バッファ41〜44は、FIFO(first-in first-out)バッファとして構成されており、先入れ及び先出しでデータが処理される。
【0041】
動作命令読み出し部36は、ハードディスク25に記憶される教示データから、溶接ロボット10の動作命令に関する情報(例えば座標、速度情報等のデータからなる軌道命令)を読み出し、動作命令バッファ41に格納する。
【0042】
軌道生成部37は、動作命令バッファ41から動作命令に関する情報(動作命令コマンド)を読み出し、それに基づいて溶接ロボット10の溶接トーチ14の作業軌道を三次元空間の直交座標上で計画する。軌道生成部37は、計画された軌道データを軌道バッファ42に格納する。
【0043】
補間点生成部38は、軌道バッファ42から軌道データを読み出し、その軌道データを、「補間周期」と呼称される所定時間毎に分割する。そして、補間周期毎に直交座標によって表される、溶接トーチ14が到達すべき位置、姿勢を示す補間点データを算出する。すなわち、軌道データは、溶接開始点から溶接終了点に至る溶接トーチ14の移動軌跡を複数の教示点によって表すとともに、教示点間の溶接トーチ14の移動方法を直線移動や円弧移動によって定義したものである。補間点生成部38は、隣接する教示点間において溶接トーチ14が通過すべき点とその点における溶接トーチ14の姿勢等のデータを補間周期毎に補間している。補間点生成部38は、算出した補間点データを補間点バッファ43に格納する。
【0044】
関節補間点生成部39は、溶接トーチ14の到達位置、姿勢を示す補間点データを、溶接ロボット10の各関節における関節角度を示すデータに逆変換する演算を行い、それを関節補間点バッファ44に一時的に記憶する。なお、本実施形態の特徴であるウィービング動作は、主にこの関節補間点生成部39において実現されるようになっている。
【0045】
関節補間点バッファ44に格納された、溶接ロボット10の各関節における関節角度を示すデータは、タイマ24によって発生される同期信号SYNCに同期してサーボ出力部40に通知される。そして、上記関節角度を示すデータは、サーボ出力部40から所定のタイミングでサーボドライバI/F28を介してサーボドライバ35へ各関節の位置指令(駆動モータ13に対する動作指令)として出力される。
【0046】
図5は、サーボドライバ35によるサーボ制御の概念を示すブロック図である。この図によると、溶接ロボット10の各関節における位置指令は、位置制御ブロック51に入力され、位置制御ブロック51の出力は、速度制御ブロック52に入力される。速度制御ブロック52の出力は、電流制御ブロック53に入力され、電流制御ブロック53の出力は、駆動モータ13に入力される。駆動モータ13の出力は、例えば減速器からなる減速機構のばね要素ブロック54を介して、負荷としてのアーム12に与えられる。
【0047】
駆動モータ13には、電流検出ブロック55が接続され、電流検出ブロック55において駆動モータ13に流れる電流が検出され、その値は電流制御ブロック53にフィードバックされる。また、駆動モータ13には、エンコーダ56が接続され、エンコーダ56によって現在の回転速度(アームの移動速度に対応)のデータが取得され、その回転速度データは、位置制御ブロック51と速度制御ブロック52にフィードバックされる。
【0048】
位置制御ブロック51では、フィードバックされた回転速度データが積分ブロック57によって積分されることにより位置データに変換されて減算器61に入力され、この減算器61により位置指令(関節角度)に対する現在の位置(関節角度)の誤差データが演算される。この誤差データは増幅器58により所定のゲインKpp(以下、位置フィードバックゲインという。)でレベル補正が行なわれた後、加算器62に入力される。
【0049】
また、位置制御ブロック51では、溶接ロボット10の各関節における位置指令のデータは、微分ブロック59によって微分されることにより速度データに変換され、さらに増幅器60により所定のゲインKff(以下、速度フィードフォワードゲインという。)でレベル補正が行なわれた後、加算器62に入力される。加算器62では速度フィードフォワードゲインKffから出力される速度データと、位置フィードバックゲインKppから出力される誤差データとが加算されて、上述した速度制御ブロック52に出力される。
【0050】
このように、溶接ロボット10の各関節における位置指令に対して駆動モータ13の動作をフィードバック制御させることにより、予め教示された教示データの再生動作をより正確に行うことができる。
【0051】
次に、本実施形態に係るウィービング動作に関する作用について、図6に示すフローチャート及び図7に示す基準座標系とツール座標系との関係を示す図を参照して説明する。
【0052】
本実施形態における特徴的なウィービング動作に関する制御は、主に関節補間点生成部39(図4参照)において実行される。すなわち、ステップS1において、関節補間点生成部39は、補間点バッファ43から補間点データIPiを読み出す。ここで、補間点データIPiとは、溶接開始位置から目標位置(溶接終了位置)に達するまでの間に存在する、溶接トーチ14の先端が移動すべき位置(溶接すべき位置を含む)、及びその位置における溶接トーチ14の姿勢を表したデータである。
【0053】
なお、溶接ロボット10には、各関節を制御するための座標系として図7に示すように、基準座標系とツール座標系とが設定されている。基準座標系は、溶接ロボット10の設置位置に固定的に設定されている。一方、ツール座標系は、溶接トーチ14の先端(ツールセンタポイント)に設定されたもので、溶接トーチ14の移動に伴って移動する。すなわち、ツール座標系の原点位置の基準座標系における位置は、溶接トーチ14の移動によって変化する。
【0054】
補間点データIPiは、溶接ロボット10の基準座標系(図7参照)から見た溶接トーチ14の位置及び姿勢、すなわち、ツール座標系の位置、姿勢を、基準座標系の座標値に変換して表したものである。補間点データIPiは、以下に示す行列式で表される。
【0055】
【数1】
【0056】
ここで、xiは基準座標系から見たツール座標系原点のX座標位置(mm)を示し、yiは基準座標系から見たツール座標系原点のY座標位置(mm)を示し、ziは基準座標系から見たツール座標系原点のZ座標位置(mm)を示し、aiは基準座標系から見たツール座標系のX軸の回転姿勢(rad)を示し、biは基準座標系から見たツール座標系のY軸の回転姿勢(rad)を示し、ciは基準座標系から見たツール座標系のZ軸の回転姿勢(rad)を示す。
【0057】
次いで、ステップS2において、関節補間点生成部39は、ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgを算出する。具体的には、直交座標によって表され、溶接トーチ14の到達位置及び姿勢を表す補間点データIPiを、溶接ロボット10の各関節における関節角度を示すデータに逆変換する。そして、溶接ロボット10の各関節における関節角度を示すデータをRAM22(関節補間点バッファ44)に記憶する。なお、多関節溶接ロボットの逆演算アルゴリズムは、プレイバックティーチングシステムで一般的に用いられる技術であるため、ここでは詳細な説明は省略する。ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgは、以下に示す行列式で表される。
【0058】
【数2】
【0059】
ここで、nは溶接ロボット10の関節数を示し、ANGorg1は溶接ロボット10の第1関節の関節角度(rad)を示し、ANGorg2は溶接ロボット10の第2関節の関節角度(rad)を示し、ANGorgnは溶接ロボット10の第n関節の関節角度(rad)を示す。
【0060】
次に、ステップS3において、関節補間点生成部39は、ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvを算出する。具体的には、直交座標によって表され、溶接トーチ14の到達位置及び姿勢を表す補間点データIPiにウィービング変位を加味し、それを溶接ロボット10の各関節における関節角度を示すデータに逆変換する。そして、それをRAM22(関節補間点バッファ44)に記憶する。ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvは、以下に示す行列式で表される。
【0061】
【数3】
【0062】
ここで、nは溶接ロボット10の関節数を示し、ANGwv1は溶接ロボット10の第1関節の関節角度(rad)を示し、ANGwv2は溶接ロボット10の第2関節の関節角度(rad)を示し、ANGwvnは溶接ロボット10の第n関節の関節角度(rad)を示す。
【0063】
次いで、ステップS4において、ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgと、ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvとの差分を求める。そして、その差分を、関節毎のウィービング変位ANGampとして、RAM22(関節補間点バッファ44)に記憶する。
【0064】
図8は、ウィービング動作を行わない場合の補間点(白丸参照)と、ウィービング動作を行う場合の補間点(黒丸参照)との違いを示した図である。この図の例では、サイン波形のウィービングパターンが溶接進行に対して重畳されている形となっている。なお、ウィービングパターンの生成方法は、公知技術であるため、ここではその説明を省略する。溶接ロボット10の関節毎のウィービング変位ANGampは、以下に示す行列式で表される。
【0065】
【数4】
【0066】
ここで、nは溶接ロボット10の関節数を示し、ANGamp1は溶接ロボット10の第1関節の関節角度(rad)を示し、ANGamp2は溶接ロボット10の第2関節の関節角度(rad)を示し、ANGampnは溶接ロボット10の第n関節の関節角度(rad)を示す。そして、ANGamp1、ANGamp2、及びANGampnは、それぞれ次式で表される。
【0067】
【数5】
【0068】
次に、ステップS5において、溶接ロボット10の各関節を駆動する駆動モータ13のサーボ制御定数と、予め指定されたウィービング周波数とに基づいて、フィードバック制御系における各駆動モータ13のゲインGAINを算出する。ゲインGAINは、以下に示す行列式で表される。
【0069】
【数6】
【0070】
ここで、nは溶接ロボット10の関節数を示し、GAIN1は溶接ロボット10の第1関節のゲイン(無次元)を示し、GAIN2は溶接ロボット10の第2関節のゲイン(無次元)を示し、GAINnは溶接ロボット10の第n関節のゲイン(無次元)を示す。
【0071】
以下、例えば溶接ロボット10の第j関節についてのゲインGAINを求める手順を説明する。
【0072】
駆動モータ13のゲインの求め方は、サーボ制御方法や、サーボ演算の仕方によって異なるが、ここでは図5に示したような一般的な位置フィードバックと速度フィードフォワードとの2自由度制御系を例にとって説明する。なお、図5に示す例では、速度ループや電流ループのフィードバック制御系をも含めているが、サーボによる遅れ系は位置ループが支配的な役割を示しており、ここでは速度ループや電流ループは不要として考える。
【0073】
第j関節を駆動する駆動モータ13の位置フィードバックゲインKppjと、速度フィードフォワードゲインKffjは、サーボ制御で一般に用いられる値であり既知の値である。これらのゲインKppjやゲインKffjは、溶接ロボット10の姿勢や動作モードによりその値が変更されることが多いが、その変更指令は、ロボット制御装置20のCPU21から発せられるものであるため、関節補間点生成部39においても読み取り可能な値である。
【0074】
まず、位置フィードバックゲインKppjと速度フィードフォワードゲインKffjとを用いて、第j関節を駆動する駆動モータ13の位置制御の遅れ系を表す時定数TSj(sec)を、以下の式によって算出する。この場合、時定数TSjは、駆動モータ13のサーボ制御定数として位置付けされる。
【0075】
【数7】
【0076】
次いで、予め定められたウィービング周波数FRQと時定数TSjとに基づいて、第j関節のゲインGAINjを以下の式によって算出する。
【0077】
【数8】
【0078】
ここで、GAINjは、第j関節を駆動するモータのゲイン [無次元]を示し、ウィービング周波数FRQは、教示されたウィービング周波数(Hz)を示す。なお、ティーチングプレイバックシステムを採用する溶接ロボット10において、ウィービング周波数FRQは、予め教示されるデータであり、溶接ロボット10の教示位置と同様に、ハードディスク25(図3参照)に記憶され、再生動作時に読み出されるものである。
【0079】
上式を用いて、例えばjを1からn(nは溶接ロボット10の関節数)まで変化させることで、溶接ロボット10の全関節におけるゲインGAINを算出する。
【0080】
次に、ステップS6において、溶接ロボット10の各関節における位置指令(駆動モータ13に対する動作指令)として、溶接ロボット10の各関節における補正後の関節角度ANGcompを算出する。具体的には、ゲインGAINjの逆数をウィービング変位ANGampに関節毎に乗じる。乗じた後の値を、ウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgに加算する。溶接ロボット10の各関節における補正後の関節角度ANGcompは、以下に示す行列式で表される。
【0081】
【数9】
【0082】
ここで、nは溶接ロボット10の関節数を示し、ANGcomp1は溶接ロボット10の第1関節の補正後の関節角度(rad)を示し、ANGcomp2は溶接ロボット10の第2関節の補正後の関節角度(rad)を示し、ANGcompnは溶接ロボット10の第n関節の補正後の関節角度(rad)を示す。そして、ANGcomp1、ANGcomp2、及びANGcompnは、それぞれ次式で表される。
【0083】
【数10】
【0084】
ここで、GAIN1は、第1関節を駆動する駆動モータ13のゲインを示し、GAIN2は、第1関節を駆動する駆動モータ13のゲインを示し、GAINnは、第n関節を駆動する駆動モータ13のゲインを示す。
【0085】
このように、駆動モータ13のフィードバック制御系におけるゲインGAINの逆数をウィービング変位ANGampの値に乗算し、それをウィービング動作を行わない場合の溶接ロボット10の各関節における関節角度ANGorgに加算し、これを溶接ロボット10の各関節における位置指令として、各駆動モータ13に与える。これにより、駆動モータ13のフィードバック制御系におけるゲインGAINが考慮された、ウィービング動作における適切な振幅を取得することができる。したがって、より正確な振幅でウィービング動作を行うことができる。
【0086】
ところで、上記した多関節溶接ロボットにおけるウィービング動作では、溶接ロボットの関節間に発生する干渉トルクによって、駆動モータ13とアーム12とを連結する図示しない減速機がたわむことがあり、各軸において本来回転すべき量(角度)が正確に得られないことがある。そのため、予め教示された、ウィービング動作における振幅が遵守できないといった問題があった。
【0087】
しかしながら、以下に示すように、ウィービング動作における減速機のたわみ量を求め、それに基づいてウィービング動作を行う場合の溶接ロボット10の各関節における関節角度を補正するようにすれば、正確な振幅を有するウィービング動作を行うことができる。以下、詳述する。
【0088】
図9は、この実施形態に係る作用を説明するためのフローチャートである。このフローチャートに係る処理は、上記した実施形態と同様、関節補間点生成部39によって主に実施されるものである。なお、図9に示すステップS11〜ステップS14の処理は、図6に示したステップS1〜ステップS4と同様であるため、以下ではそれらの説明を省略し、ステップS15〜S17について説明する。
【0089】
ステップS15において、溶接ロボット10の関節の軸まわりに発生するトルクTRQjを関節毎に求める。より具体的には、溶接ロボット10の機構パラメータ(関節に連結されるアーム12の重心位置、質量、慣性テンソル、長さ)、溶接ロボット10の関節位置ANGwvj、関節角速度VELwvj、及び関節角加速度ACCwvjを用いて逆動力学演算を行うことにより、上記トルクTRQjを求める。なお、トルクTRQj、関節位置ANGwvj、関節角速度VELwvj、及び関節角加速度ACCwvjにおける添え字jは、溶接ロボット10の関節番号を表すものである。
【0090】
一般に、各関節に発生するトルクは、溶接ロボット10の機構パラメータ(関節に連結されるアーム12の重心位置、質量、慣性テンソル、長さ)と、各関節の位置、角速度、角加速度とに基づいて、次式による演算によって求められることが知られており、これを「逆動力学モデル」という。
【0091】
【数11】
【0092】
ここで、上式の各項は、表1に示す意味を有する。
【0093】
【表1】
【0094】
上記(1) 式に示した逆動力学モデルは、慣性行列H、粘性行列C及び重力行列Gから構成され、溶接ロボット10の関節数がnの場合、慣性行列Hは、n×nの対称行列で表され、溶接ロボット10の各関節の角加速度により関節自身に発生するトルク、及び他の関節の角加速度により発生する干渉トルクを示すものである。粘性行列Cは、n×1行列で表され、溶接ロボット10の各関節の角速度により生じる遠心力、及びコリオリ力から成るトルクを示すものである。重力行列Gは、n×3行列で表され、重力加速度の影響により発生するトルクを示すものである。
【0095】
ここで、溶接ロボット10の機構パラメータは、表2に示す4つの項目から構成される。なお、表2中の個数は、関節に連結されるアーム1つあたりの値である。
【0096】
【表2】
【0097】
なお、慣性テンソルIは、物体(例えば溶接ロボット10のアーム12)の回転し難さを示すのに一般的に用いられ、公知の通り、表2中の3×3の対称行列で表される。そして、その対角成分は溶接ロボット10の各関節の慣性モーメントIx,Iy,Izを、その他の成分は慣性乗積Ixy,Iyz,Izxの負の値を表す。
【0098】
また、慣性モーメントIx,Iy,Izは、物体の回り難さ及び止め難さを表すものであり、例えば次式により求められる。
【0099】
【数12】
【0100】
さらに、慣性乗積Ixy,Iyz,Izxは、物体が回転運動を行っているとき、その運動を乱すモーメントを表すものであり、次式により求められる。
【0101】
【数13】
【0102】
ここで、dmは微小体積の質量を示す。なお、式中のx,y,zは、所定のリンク座標系を基準として表される。基本的なリンク座標系について、図10及び図11を参照して説明すると、例えば、第2関節と第3関節との間に伸張する第2リンクL2(アームに相当)においては、第2関節の回転中心を原点として、第2関節に割り当てられるリンク座標が定められ、そのx方向は第2リンクL2の長さの方向であり、z方向は第2関節の回転方向であり、y方向は右手座標系の方向である。
【0103】
図10及び図11に示した第2リンクL2の慣性テンソルIの基準座標は、第2関節に割り当てられたリンク座標系を第2リンクL2の重心位置に移動したときの座標系とされる。他の関節についても同様に定義される。
【0104】
溶接ロボット10の機構パラメータは、溶接ロボット10の機構やアーム12の形状及び材質から予め求めておくことが可能な既知の固定値である。そのため、各関節に発生するトルクTRQjは、各関節の関節位置ANGwvj、関節速度VELwvj、及び関節加速度ACCwvjに基づいて演算により求めることができる。
【0105】
すなわち、慣性行列H、粘性行列C及び重力行列Gの演算方法については、公知であるため、ここでの詳細な説明は省略する。例えば溶接ロボット10が3つの関節からなる場合、慣性行列H、粘性行列C、及び重力行列Gは、以下の式で表される。
【0106】
【数14】
【0107】
上記の各式の各構成要素は、表2に示した機構パラメータ、関節位置θ、関節速度θdのみから構成され、θ、θd以外はすべて既知の値である。関節位置θには、ステップS13(図9参照)において算出されたウィービング動作を行う場合の各関節の関節角度ANGwvを当て嵌めることができる。また、関節速度θdには、補間周期毎に算出され、ウィービング動作を行う場合の各関節の関節角度ANGwvを一階微分することで算出される関節角速度VELwvを当て嵌めることができる。したがって、ウィービング動作を行う場合の各関節における関節位置ANGwv、及び関節角速度VELwvをそれぞれθ、及びθdに代入することにより、上記(1) 式中の慣性行列H、粘性行列C及び重力行列Gが算出される。θ、θd、及び関節角速度VELwvは、次式で表される。
【0108】
【数15】
【0109】
ここで、nは溶接ロボット10の関節数を示し、VELwv1は溶接ロボット10の第1関節の関節角速度(rad/sec)を示し、VELwv2は溶接ロボット10の第2関節の関節角速度(rad/sec)を示し、VELwvnは溶接ロボット10の第n関節の関節角速度(rad/sec)を示す。
【0110】
式(1) 中の重力加速度ベクトルgは、重力加速度が働く方向を示すベクトルであるから、これも溶接ロボット10の設置姿勢より予め定めることができる。
【0111】
式(1) 中の関節加速度θddは、補間周期毎に算出されるウィービング動作を行う場合の各関節の関節角度ANGwvを二階微分することで算出される関節加速度ACCwvを当て嵌めることができる。したがって、下式のように関節角加速度ACCwvを設定することにより、上記(1) 式で表される逆動力学モデルに基づいて、指定されたウィービング動作を実現するために各関節が発生すべきトルクTRQを算出する。θdd、及び関節角加速度ACCwvは、次式で表される。
【0112】
【数16】
【0113】
ここで、nは溶接ロボット10の関節数を示し、ACCwv1は溶接ロボット10の第1関節の関節角加速度(rad/sec2)を示し、ACCwv2は溶接ロボット10の第2関節の関節角加速度(rad/sec2)を示し、ACCwvnは溶接ロボット10の第n関節の関節角加速度(rad/sec2)を示す。
【0114】
以上より、式(1) は、次式で表される。
【0115】
【数17】
【0116】
また、トルクTRQは、次式で表される。
【0117】
【数18】
【0118】
ここで、nは溶接ロボット10の関節数を示し、TRQ1は溶接ロボット10の第1関節の発生トルク(N・m)を示し、TRQ2は溶接ロボット10の第2関節の発生トルク(N・m)を示し、TRQnは溶接ロボット10の第n関節の発生トルク(N・m)を示す。
【0119】
上式により算出される各関節におけるトルクTRQは、関節を加速するために必要なトルクだけでなく、他の関節における関節速度や関節加速度により受ける干渉トルクをも含んでいる。
【0120】
図12は、補間周期毎に算出される、ウィービング動作する場合の関節角度ANGwv、各関節における関節速度VELwv及び関節加速度ACCwvの関係を示す図である。
【0121】
次に、ステップS16において、ウィービング動作1周期毎に発生するトルクの平均値を算出する。具体的には、図13に示すように、ウィービング動作における右端点での発生トルクTRQrjと、ウィービング動作における左端点での発生トルクTRQljとを算出し、さらにそれらの平均値を算出し、その平均値をウィービング動作を行わない場合に発生するトルクTRQavejとして、RAM22に記憶する。
【0122】
【数19】
【0123】
ここで、nは溶接ロボット10の関節数を示し、TRQr1は溶接ロボット10の第1関節の右端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQr2は溶接ロボット10の第2関節の右端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQrnは溶接ロボット10の第n関節の右端点におけるウィービング動作時の発生トルク(N・m)を示す。
【0124】
【数20】
【0125】
ここで、nは溶接ロボット10の関節数を示し、TRQl1は溶接ロボット10の第1関節の左端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQl2は溶接ロボット10の第2関節の左端点におけるウィービング動作時の発生トルク(N・m)を示し、TRQlnは溶接ロボット10の第n関節の左端点におけるウィービング動作時の発生トルク(N・m)を示す。
【0126】
【数21】
【0127】
ここで、nは溶接ロボット10の関節数を示し、TRQave1は溶接ロボット10の第1関節の平均トルク(N・m)を示し、TRQave2は溶接ロボット10の第2関節の平均トルク(N・m)を示し、TRQavenは溶接ロボット10の第n関節の平均トルク(N・m)を示す。
【0128】
そして、TRQave1、TRQave2、及びTRQavenは、それぞれ次式で表される。
【0129】
【数22】
【0130】
なお、上記では、ウィービング動作の1周期における平均トルクTRQaveを、ウィービング動作の左右端点における平均を算出することによって求めたが、この方法に代えて、1周期内の全サンプリング点の平均を算出することにより求めるようにしてもよい。
【0131】
次に、ステップS17において、ウィービング動作により発生するトルクによって生じる、駆動モータ13とアーム12とを連結する図示しない減速機のたわみ量を、ウィービング動作における振幅が変化する量として算出し、それを用いてウィービング動作を行う場合の溶接ロボット10の各関節における関節角度を補正する。
【0132】
具体的には、減速機のたわみ量は、先に算出した各関節に発生するトルクTRQから、ウィービング動作の1周期における平均トルクTRQaveを差し引くことで、ウィービング動作によって発生したトルクを抽出し、この値を、溶接ロボット10の各関節におけるばね定数Kjで除算することにより算出する。
【0133】
そして、このたわみ量を、ウィービング動作を行う場合の溶接ロボット10の各関節における関節角度ANGwvに加算することにより、それを溶接ロボット10の各関節における位置指令(駆動モータ13に対する動作指令)として、溶接ロボット10の各関節における補正後の関節角度ANGcompjを算出する。補正後の関節角度ANGcompj、及びばね定数Kは、次式で表される。
【0134】
【数23】
【0135】
ここで、nは溶接ロボット10の関節数を示し、K1は溶接ロボット10の第1関節のばね定数(rad/N・m)を示し、K2は溶接ロボット10の第2関節のばね定数(rad/N・m)を示し、Knは溶接ロボット10の第n関節のばね定数(rad/N・m)を示す。上記ばね定数Kは、使用する減速機に基づいて既知とすることが可能な定数であり、事前にハードディスク25内に記憶される。
【0136】
このように、関節の軸まわりに発生するトルクTRQからウィービング動作を行わない場合に発生するトルクTRQaveを差し引き、それを各関節のばね定数Kで除算して、除算した値をウィービング動作を行う場合の各関節の関節角度ANGwvに加え、これを各関節に駆動する駆動モータ13の動作指令として各駆動モータ13に与える。これにより、アーム12間に発生する干渉トルクによる図示しない減速機のたわみ量を用いて各駆動モータ13に与える各関節の関節角度ANGwvを補正することができる。そのため、適切な振幅を有するウィービング動作を行うことができる。
【0137】
もちろん、この発明の範囲は上述した実施の形態に限定されるものではない。
【図面の簡単な説明】
【0138】
【図1】本願発明に係るロボット制御装置が適用されるロボット制御システムを示す構成図である。
【図2】ウィービング動作を説明するための図である。
【図3】ロボット制御装置の内部構成及びその周辺装置を示すブロック図である。
【図4】CPU及びRAMの実際的な機能をブロックにして表した場合の構成図である。
【図5】サーボドライバによるサーボ制御の概念を示すブロック図である。
【図6】ウィービング動作における作用を説明するためのフローチャートである。
【図7】溶接ロボットの基準座標系とツール座標系との関係を示す図である。
【図8】ウィービング動作を行わない場合の補間点と、ウィービング動作を行う場合の補間点との違いを示した図である。
【図9】ウィービング動作における他の作用を説明するためのフローチャートである。
【図10】溶接ロボットにおけるリンク及び関節の関係を示す図である。
【図11】第2リンクと第2関節のリンク座標系の関係を示す図である。
【図12】ウィービング動作する場合の関節角度、各関節における関節速度及び関節加速度の関係を示す図である。
【図13】ウィービングパターンと時間との関係を示す図である。
【符号の説明】
【0139】
10 溶接ロボット
12 アーム
13 駆動モータ
14 溶接トーチ
15 溶接ワイヤ
20 ロボット制御装置
21 CPU
22 RAM
30 溶接電源装置
35 サーボドライバ
39 関節補間点生成部
44 関節補間点バッファ
51 位置制御ブロック
58 位置フィードバックゲイン
W ワーク(被溶接物)
【特許請求の範囲】
【請求項1】
溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、
前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、
前記サーボモータのサーボ制御定数と予め定めるウィービング周波数とに基づいて、前記サーボモータのフィードバック制御系におけるゲインを算出するゲイン算出手段と、
前記ゲイン算出手段によって算出されたゲインの逆数を、前記ウィービング変位算出手段によって算出された前記ウィービング変位に乗じ、その値をウィービング動作しない場合の前記各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、
を備えることを特徴とする、溶接ロボット制御装置。
【請求項2】
前記サーボ制御定数は、前記サーボモータの位置制御の遅れ系を表す時定数である、請求項1に記載の、溶接ロボット制御装置。
【請求項3】
溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、
前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、
前記関節の軸まわりに発生するトルクを関節毎に算出する第1トルク算出手段と、
前記補間点ごとに前記ウィービング動作をしない場合に発生するトルクを算出する第2トルク算出手段と、
前記第1トルク算出手段によって算出された、前記関節の軸まわりに発生するトルクの値と、前記第2トルク算出手段によって算出された、前記ウィービング動作をしない場合に発生するトルクの値とを差し引き、その差し引いた値を、予め定められた各関節におけるばね定数で除算し、その除算した値を、前記ウィービング動作する場合の各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、
を備えることを特徴とする、溶接ロボット制御装置。
【請求項4】
前記第2トルク算出手段は、
前記補間点ごとに、前記ウィービング動作の一周期毎に前記ウィービング動作の右端において発生するトルクと、前記ウィービング動作の左端において発生するトルクとの平均値を算出することにより、前記ウィービング動作をしない場合に発生するトルクを算出する、請求項3に記載の溶接ロボット制御装置。
【請求項1】
溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、
前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、
前記サーボモータのサーボ制御定数と予め定めるウィービング周波数とに基づいて、前記サーボモータのフィードバック制御系におけるゲインを算出するゲイン算出手段と、
前記ゲイン算出手段によって算出されたゲインの逆数を、前記ウィービング変位算出手段によって算出された前記ウィービング変位に乗じ、その値をウィービング動作しない場合の前記各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、
を備えることを特徴とする、溶接ロボット制御装置。
【請求項2】
前記サーボ制御定数は、前記サーボモータの位置制御の遅れ系を表す時定数である、請求項1に記載の、溶接ロボット制御装置。
【請求項3】
溶接ロボットの各関節に設けられた複数のサーボモータをフィードバック制御で駆動することにより、溶接軌道上を所定時間ごとに分割した補間点ごとに、溶接トーチをウィービング動作させつつアークを発生させて前記溶接ロボットに溶接を行わせる溶接ロボット制御装置であって、
前記補間点ごとに、ウィービング動作しない場合の前記各関節の関節角度と、ウィービング動作する場合の前記各関節の関節角度との差を前記関節ごとにウィービング変位として算出するウィービング変位算出手段と、
前記関節の軸まわりに発生するトルクを関節毎に算出する第1トルク算出手段と、
前記補間点ごとに前記ウィービング動作をしない場合に発生するトルクを算出する第2トルク算出手段と、
前記第1トルク算出手段によって算出された、前記関節の軸まわりに発生するトルクの値と、前記第2トルク算出手段によって算出された、前記ウィービング動作をしない場合に発生するトルクの値とを差し引き、その差し引いた値を、予め定められた各関節におけるばね定数で除算し、その除算した値を、前記ウィービング動作する場合の各関節の関節角度に加算することにより、前記補間点ごとに前記サーボモータに対する動作指令としての前記各関節の関節角度を算出する動作指令算出手段と、
を備えることを特徴とする、溶接ロボット制御装置。
【請求項4】
前記第2トルク算出手段は、
前記補間点ごとに、前記ウィービング動作の一周期毎に前記ウィービング動作の右端において発生するトルクと、前記ウィービング動作の左端において発生するトルクとの平均値を算出することにより、前記ウィービング動作をしない場合に発生するトルクを算出する、請求項3に記載の溶接ロボット制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2006−59037(P2006−59037A)
【公開日】平成18年3月2日(2006.3.2)
【国際特許分類】
【出願番号】特願2004−238783(P2004−238783)
【出願日】平成16年8月18日(2004.8.18)
【出願人】(000000262)株式会社ダイヘン (990)
【出願人】(000005197)株式会社不二越 (625)
【Fターム(参考)】
【公開日】平成18年3月2日(2006.3.2)
【国際特許分類】
【出願日】平成16年8月18日(2004.8.18)
【出願人】(000000262)株式会社ダイヘン (990)
【出願人】(000005197)株式会社不二越 (625)
【Fターム(参考)】
[ Back to top ]