(58)【調査した分野】(Int.Cl.,DB名)
前記閾値設定手段は、予め定められたプログラムを稼働させ、前記被駆動体の駆動トルクと当該被駆動体の実トルクから得られる外乱値に、予め定められた誤差値を加味した値を基準閾値として設定し、
前記提供手段は、前記基準閾値を基準として感度レベルを段階的に設定できるユーザインタフェースを提供することを特徴とする請求項1記載のモータ駆動構造を備えたシステム。
前記産業用ロボットは溶接ロボットであり、当該溶接ロボットは前記複数種類のエンドエフェクタとして複数種類のトーチを用いて溶接作業を行うことが可能であることを特徴とする請求項4記載のモータ駆動構造を備えたシステム。
予め定められたプログラムを稼働させ、前記被駆動体の駆動トルクと当該被駆動体の実トルクから得られる外乱値に、予め定められた誤差値を加味した値を基準閾値として設定する工程を更に備え、
前記基準閾値を基準として感度レベルを段階的に設定できるユーザインタフェースを提供することを特徴とする請求項8記載の溶接物製造方法。
【発明を実施するための形態】
【0015】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図1は、本実施の形態に係る溶接ロボットシステム1の概略構成図である。
本実施の形態に係る溶接ロボットシステム1は、アーク溶接を行う溶接ロボット10と、溶接ロボット10に取り付けられた溶接ワイヤに高電圧を印加し、アークを発生させる溶接電源20と、これら溶接ロボット10および溶接電源20を制御するロボットコントローラ30と、教示データを入力する教示装置40と、を備えている。
【0016】
溶接ロボット10は、6関節(軸)構成の垂直多関節ロボットであるアーク溶接ロボットである。つまり、溶接ロボット10は、モータにより駆動される被駆動体の一例としての関節を複数(本実施の形態では6個)有するモータ駆動構造の一例としての産業用ロボットである。溶接ロボット10は、ロボットコントローラ30から後述する必要駆動トルクτ´が印加されると、内蔵するサーボモータが駆動し、所望の姿勢をとることができる。本実施の形態に係る溶接ロボット10のアーム先端には、溶接を行うための溶接電流やシールドガスなどの供給を行うエンドエフェクタやツールの一例としての溶接トーチ11が装着されている。また、溶接ロボット10には、溶接ワイヤを溶接トーチ11の方へ送り供給する送給装置12が装着されている。
【0017】
ロボットコントローラ30は、溶接の制御を行う際の演算処理等を行うCPU(Central Processing Unit)30aと、各種データやCPU30aにて実行されるプログラム等が記憶されたROM(Read Only Memory)30bと、CPU30aの作業用メモリ等として用いられるRAM(Random Access Memory)30cと、内容を書き換え可能なEEPROM(Electrically Erasable & Programmable Read Only Memory)30dと、HDD(Hard Disk Drive)30eと、を備えている。
【0018】
ROM30bに記憶されたプログラムの中には、例えば、溶接ロボット10に取り付けられた溶接トーチ11の移動する目標位置、指定速度が記述された教示プログラムなどが含まれる。なお、プログラムをEEPROM30dあるいはHDD30eに記憶してもよい。また、教示プログラムは、教示装置40からの入力操作またはパーソナルコンピュータ等の不図示の接続機器からの入力操作によって作成・編集可能である。
ロボットコントローラ30については、後で詳述する。
【0019】
教示装置40は、溶接ロボット10の教示作業の際に、溶接経路や溶接作業条件等を入力するために使用される装置である。教示装置40は、液晶などにより構成された表示画面41と、入力ボタン42とを備えている。あるいは、教示装置40は、例えば、低圧の電界を形成したパネルの表面電荷の変化を検知することで指が触れた位置を電気的に検出する静電容量方式や、互いに離間する電極の指が触れた位置が非通電状態から通電状態に変化することによりその位置を電気的に検出する抵抗膜方式等の周知のタッチパネルであってもよい。
【0020】
次に、ロボットコントローラ30について詳述する。
図2は、ロボットコントローラ30の構成を示すブロック図である。
ロボットコントローラ30は、溶接ロボット10、溶接トーチ11および送給装置12の種類毎のパラメータを記憶するパラメータ記憶部31と、溶接ロボット10のモデル(動特性)を導き出すモデル導出部32と、モデル導出部32が導き出したモデルを記憶するモデル記憶部33と、を備えている。また、ロボットコントローラ30は、溶接ロボット10の軌道を算出する軌道計算部34と、溶接ロボット10に対して必要駆動トルクτ´を印加するコントローラ35と、を備えている。
【0021】
なお、本実施の形態において、ロボットコントローラ30における各部の機能は、CPU30aがプログラムをROM30bからRAM30cに読み込んで実行することにより実現される。また、本実施の形態のロボットコントローラ30における機能を実現するプログラムは、通信手段により提供することはもちろん、DVD−ROMやフラッシュメモリなどの記録媒体に格納して提供するようにしてもよい。
【0022】
パラメータ記憶部31は、溶接ロボット10、溶接トーチ11および送給装置12の種類毎のパラメータを記憶する。例えば、溶接トーチ11のパラメータとしては、質量、重心位置、重心周りの慣性などが含まれる。パラメータ記憶部31は、溶接ロボット10、溶接トーチ11あるいは送給装置12の商品番号、商品名などの識別情報と、パラメータとを対応付けて記憶している。なお、パラメータ記憶部31は、ROM30bにより構成されることを例示することができる。
【0023】
モデル導出部32は、先ず、教示装置40の表示画面41に、溶接トーチ11あるいは送給装置12の識別情報の入力を使用者に促す画面である識別情報入力画面を表示させ、この識別情報入力画面を介して入力された識別情報を取得する。
図3は、識別情報入力画面を例示する図である。
図3(a)は、教示装置40の表示画面41に表示された識別情報入力画面を例示する図である。
図3(b)は、教示装置40がタッチパネルである場合に、このタッチパネルに表示された識別情報入力画面を例示する図である。
図3では、溶接トーチ11の識別情報の入力画面を例示している。
モデル導出部32は、識別情報入力画面を介して入力された識別情報を基に、パラメータ記憶部31からその識別情報に対応するパラメータを読み取り、ロボットコントローラ30にて制御すべき溶接ロボット10のモデル(動特性)を導き出す。そして、モデル導出部32は、導き出した溶接ロボット10のモデルを、モデル記憶部33に記憶する。モデル記憶部33は、EEPROM30dあるいはHDD30eにより構成される。
【0024】
軌道計算部34は、モデル記憶部33に記憶された溶接ロボット10のモデル(動特性)を読み込み、読み込んだモデルに基づいて溶接ロボット10が所望の動作を行うような各関節(軸)の角度を算出する。
コントローラ35は、モデル記憶部33に記憶された溶接ロボット10のモデルを読み込み、読み込んだモデルに対して、所望の動作を行わすための各関節(軸)の必要駆動トルクτ´を算出し、この必要駆動トルクτ´を溶接ロボット10に印加する。これにより、溶接ロボット10は、コントローラ35からの必要駆動トルクτ´に基づいて移動する。そして、溶接ロボット10のモータのエンコーダにより検出された各関節の角度θがロボットコントローラ30にフィードバックされる。
【0025】
また、ロボットコントローラ30は、溶接ロボット10が障害物と衝突したことを検知する機能を有している。つまり、ロボットコントローラ30は、溶接ロボット10に生じた外乱トルクdを算出する外乱算出部36と、外乱トルクdを、衝突検知の判定に使用する衝突評価量Aに変換する評価量算出部37と、衝突検知の判定に使用する衝突検知閾値Asを設定する閾値設定部38と、衝突評価量Aと衝突検知閾値Asとを比較する比較部39と、を備えている。
【0026】
外乱算出部36は、コントローラ35から入力される必要駆動トルクτ´、溶接ロボット10のエンコーダから入力される関節角度θなどに基づいて各関節の外乱トルクdを定期的に算出する。外乱算出部36にて算出された外乱トルクdは評価量算出部37に出力される。外乱トルクdを算出する手法は以下の通りである。
【0027】
ロボットの運動方程式モデルは一般に以下の式で表される。
【0029】
ここで、Θは溶接ロボット10の関節角度ベクトル(モータ回転角度ベクトルと1対1に比例)、J(Θ)はロボットの慣性行列、C(dΘ/dt,Θ)は重力、遠心コリオリ力、摩擦などを含むベクトル、Τはトルクベクトル、Dは外乱トルクベクトルである。
【0030】
式(1)から外乱トルクベクトルDは以下の式(2)で算出することができる。
【0032】
モータ制御の分野では、一般的に、関節(軸)毎に外乱が導出されることが多いので、溶接ロボット10のある関節(軸)に注目して式(1),(2)式を書き換えると、以下の式(3)、(4)が得られる。
【0035】
ここで、θとτとdは、それぞれ、ある関節(軸)の関節角度とトルクと外乱トルク、j(Θ)はある関節(軸)の慣性、c(d
2Θ
other/dt
2,dΘ/dt,Θ)はある関節(軸)に対応するベクトルCの要素と他の関節(軸)から受ける慣性力(ただしΘ
otherはθを除いた他の関節(軸)の関節角度を要素とするベクトル)である。
【0036】
また、モータを駆動させるために必要な必要駆動トルクτ´は、式(1)あるいは式(3)の運動方程式モデルから推定可能で、式(1)左辺あるいは式(3)左辺の和として計算できる。すなわち、必要駆動トルクベクトルΤ´と、ある関節(軸)に関する必要駆動トルクτ´はそれぞれ以下の式(5)、(6)で計算できる。
【0039】
式(2)および式(5)、式(4)および式(6)から明らかなように、一般的に、外乱トルクdは必要駆動トルクτ´と実トルクτの差として記述され、以下の式(7)、(8)で与えられる。
【0042】
以上より、外乱算出部36は、コントローラ35から入力される必要駆動トルクτ´と、溶接ロボット10のエンコーダから入力される関節角度θと、モデル記憶部33から読み込んだ溶接ロボット10のモデルに基づいて予め導き出されたj(Θ)と、予め導き出されたc(d
2Θ
other/dt
2,dΘ/dt,Θ)とにより、式(8)から各関節(軸)の外乱トルクdを算出する。
【0043】
評価量算出部37は、外乱算出部36が算出した外乱トルクdを、衝突検知の判定に使用する衝突評価量Aに変換し、変換した衝突評価量Aを比較部39に出力する。衝突評価量Aは、例えば外乱トルクd自体、または外乱トルクdの絶対値|di|であることを例示することができる。
【0044】
閾値設定部38は、衝突検知の判定に使用する衝突検知閾値Asを設定する。設定する手法については後で詳述する。
比較部39は、評価量算出部37が変換した衝突評価量Aと、閾値設定部38が設定した衝突検知閾値Asとに基づいて、溶接ロボット10が衝突しているか否かを判別する。具体的には、比較部39は、衝突評価量Aが衝突検知閾値Asより大きければ溶接ロボット10が衝突していると判定し、衝突評価量Aが衝突検知閾値As以下であれば衝突していないと判定する。
そして、比較部39は、溶接ロボット10が衝突していると判定した場合にはコントローラ35にその旨出力する。コントローラ35は、溶接ロボット10が衝突している旨の通知を受けた場合には、溶接ロボット10の動作を停止するべく、必要駆動トルクτ´を零とするなどの処理を行う。
【0045】
以上のように構成された衝突検知機能においては、外乱算出部36が算出した外乱トルクdを変換した衝突評価量Aが予め定められた衝突検知閾値Asより大きければ溶接ロボット10が障害物と衝突していると判定する。
【0046】
ここで、例えば、各関節(軸)にカメラを取り付け、カメラの映像に基づいて衝突回避を行う構成も考えられる。ただし、本実施の形態のように溶接作業を行う溶接ロボット10においては、実際の作業の際にヒュームやスパッタなどの飛散物がそのカメラに付着する可能性が特に高い。この場合、飛散物によってカメラが影響を受けることで衝突を誤検知するおそれがある。これに対して、本実施の形態の溶接ロボットシステム1では、必要駆動トルクτ´と実トルクτから得られる外乱トルクdを衝突検知閾値Asと比較して衝突検知を行う構成を採用することで、例えばカメラ等を必要としない衝突検知を行っている。
【0047】
ところで、上述した衝突検知閾値Asが小さいほどより早く衝突の発生を検知することが可能となるが、小さくし過ぎると、実際に衝突が発生していない場合でも衝突が発生しているとの誤った判断をしてしまう。
図4は、衝突が発生していない場合の外乱トルクdの時間変化を例示する図である。
コントローラ35などで使用する溶接ロボット10のモデル(動特性)と実機との間には、溶接ロボット10の機械的な差、溶接ロボット10が据え付けられた場所での温度変化などの環境の差、溶接トーチ11用のケーブルの這わせ方などにより、ある程度の誤差が生じる。その結果、外乱トルクdは、衝突が発生していない場合でも、零とはならずに
図4に示すように零と乖離して変化する。
【0048】
そのため、衝突検知閾値Asを極度に引き下げると、実際に衝突が発生する前でも外乱トルクdに応じた衝突評価量Aが衝突検知閾値Asを超える状態が起き、誤検知してしまう。一方、衝突検知閾値Asの値が大き過ぎると、実際に衝突が発生しても外乱トルクdに応じた衝突評価量Aが衝突検知閾値Asを超えない状態となってしまい、衝突が検知されなくなってしまう。したがって、迅速かつ信頼性の高い衝突検知を実現するためには、適正な衝突検知閾値Asを設定することが必要となる。また、衝突検知閾値Asを設定するにあたって、使用者が関知する事項は少ない方がよい。使用者の負担を軽減することができるとともに、使用者の設定ミスによる誤検出などを抑制することができるためである。
【0049】
<第1の実施形態>
かかる事項に鑑み、第1の実施形態に係る閾値設定部38は、以下に述べる手法にて衝突検知閾値Asを設定する。なお、閾値設定部38は、溶接ロボット10の各関節(軸)分の衝突検知閾値Asを設定するが、その手法は同じである。以下では、ある関節の衝突検知閾値Asを設定する手法について説明する。
【0050】
閾値設定部38は、先ず、ある動作プログラムに基づいて溶接ロボット10を動かしたときの外乱トルクdの最大値である最大外乱トルクdmaxを算出する。そして、算出した最大外乱トルクdmaxに基づいて、衝突検知閾値Asを設定するのに基準となる外乱トルク基準値dsの仮の値である外乱トルク仮基準値dtを設定する。例えば、外乱トルク仮基準値dtとして、算出した最大外乱トルクdmaxに予め定められた値の係数αを加算することにより得られた値を設定する。
ここで、係数αは、溶接ロボット10の軌道、溶接ロボット10の種類、溶接トーチ11の種類などに応じて経験則に基づいて設定される値である。
【0051】
閾値設定部38は、外乱トルク仮基準値dtを設定した後、設定した外乱トルク仮基準値dtと、衝突検知閾値Asを設定する使用者が設定した感度Kに応じた修正値βに基づいて、外乱トルク基準値dsを算出する。外乱トルク基準値dsは、例えば外乱トルク仮基準値dtに修正値βを加算することにより得られる値であることを例示することができる。修正値βについては後で詳述する。そして、この外乱トルク基準値dsに基づいて衝突検知閾値Asを算出する。衝突検知閾値Asは、例えば外乱トルク基準値ds自体、または外乱トルク基準値dsの絶対値|ds|であることを例示することができる。
【0052】
図5は、使用者に感度Kの設定を促す画面である感度設定画面を例示する図である。
図5(a)は、教示装置40の表示画面41に表示された感度設定画面を例示する図である。
図5(b)は、教示装置40がタッチパネルである場合に、このタッチパネルに表示された感度設定画面を例示する図である。
上述したように、修正値βは、外乱トルク仮基準値dtに加算される値であり、衝突検知閾値Asの基準となる外乱トルク基準値dsを増減する値である。
図5(a)に示すように、教示装置40の表示画面41に表示された画面には、使用者に対して、修正値βと相関関係のある感度Kの入力を促す文字が表示されている。使用者は、
図5(a)に示した感度設定画面に、入力ボタン42を介して感度Kの値を入力することで感度Kを設定する。あるいは、
図5(b)に示すように、教示装置40のタッチパネルに表示された画面には、使用者に対して、感度Kの設定を促す文字が表示されている。使用者は、
図5(b)に示した感度設定画面の「↑」、「↓」で、感度Kの値を上下することで感度Kを設定する。
【0053】
図6は、感度Kと修正値βとの相関関係を例示する図である。
図6に例示した相関関係では、感度Kが零のとき修正値βは零であり、感度Kが−1のとき修正値βは所定値γ(γは正の値)の1倍(β=1×γ)、感度Kが−2のとき修正値βは所定値γの2倍(β=2×γ)、というように感度Kが1減る(マイナスされる)毎に修正値βが所定値γ増加する。また、感度Kが+1のとき修正値βは所定値γの−1倍(β=−1×γ)、感度Kが+2のとき修正値βは所定値γの−2倍(β=−2×γ)、というように感度Kが1増える(プラスされる)毎に修正値βが所定値γ減少する。
【0054】
図5に例示した感度設定画面上で使用者が感度Kの値を設定すると、
図6に示すように予め定められた相関関係に基づいて、修正値βを設定する。
これにより、ある動作プログラムに基づいて溶接ロボット10を動かしたときの最大外乱トルクdmaxに、経験則に基づいて予め設定された係数αを加算することにより得られた値が外乱トルク仮基準値dtとして設定される。そして、この外乱トルク仮基準値dtに、使用者が設定した感度Kに基づいて定めた修正値βを加算することにより得られる値が外乱トルク基準値dsとして設定される。
【0055】
例えば、使用者が感度Kの値として+2を入力した場合、修正値βが−2γに設定され、外乱トルク基準値dsが外乱トルク仮基準値dtに対して所定値γの−2倍の値が加算された値に設定される。その結果、感度Kが零に設定される場合(外乱トルク基準値ds=外乱トルク仮基準値dt)よりも、衝突検知閾値Asが小さくなるので、外乱トルクdが小さくても衝突として検知され易くなる。
【0056】
他方、例えば、使用者が感度Kの値として−2を入力した場合、修正値βが2γに設定され、外乱トルク基準値dsが外乱トルク仮基準値dtに対して所定値γの2倍の値が加算された値に設定される。これにより、感度Kが零に設定される場合(外乱トルク基準値ds=外乱トルク仮基準値dt)よりも、衝突検知閾値Asが大きくなるので、外乱トルクdが大きくても衝突として検知され難くなる。
【0057】
このように第1の実施形態に係る閾値設定部38によれば、使用者は、溶接ロボット10の軌道などに応じて、感度Kを設定でき、例えば感度Kをプラスにして迅速性に優れた衝突検知とすること、あるいは、感度Kをマイナスにして信頼性に優れた衝突検知とすることを選択することが可能となる。また、使用者は、感度Kを設定するだけであるため、第1の実施形態に係る閾値設定部38によれば、使用者の衝突検知閾値Asを設定する負担を軽減させることができるとともに、使用者の設定ミスによる誤検出などを抑制することができる。
【0058】
なお、溶接ロボット10は、据え付けられた場所の環境や溶接トーチ11用のケーブルの這わせ方などにより異なった特徴を示す。そのため、閾値設定部38は、使用者に溶接ロボットシステム1を納入し、据え付けた状態(実際にシステムを使用する状態)で、衝突検知閾値Asを設定するとよい。
【0059】
次に、フローチャートを用いて、閾値設定部38が行う衝突検知閾値設定処理の手順について説明する。
図7は、閾値設定部38が行う衝突検知閾値設定処理の手順を示すフローチャートである。
閾値設定部38は、溶接ロボット10を実際の動作プログラムに従い動作を開始させた後に衝突検知閾値設定処理を実行する。あるいは、閾値設定部38は、衝突検知閾値設定処理の一環として、溶接ロボット10を実際の動作プログラムに従い動作させてもよい。以下では、閾値設定部38が、溶接ロボット10を実際の動作プログラムに従い動作を開始させた旨の情報(信号)を取得後に衝突検知閾値設定処理を実行する態様について説明する。
【0060】
先ず、外乱トルクdの最大値である最大外乱トルクdmaxを初期化する(ステップ(以下、単に、「S」と記す。)701)。その後、外乱算出部36にて算出した最新の外乱トルクdを取得し(S702)、取得した外乱トルクdがこの時点での最大外乱トルクdmaxよりも大きいか否かを判別する(S703)。
【0061】
そして、取得した外乱トルクdが最大外乱トルクdmaxよりも大きい場合(S703でYES)、この外乱トルクdを新たな最大外乱トルクdmaxと置き換え(S704)、動作が終了しているか否かを判別する(S705)。他方、取得した外乱トルクdが最大外乱トルクdmax以下の場合(S703でNO)、この外乱トルクdを最大外乱トルクdmaxとして置き換えることなしに、動作が終了しているか否かを判別する(S705)。
【0062】
そして、動作が終了している場合(S705でYES)、最大外乱トルクdmaxに予め定められた値の係数αを加算することにより外乱トルク仮基準値dtを算出する(S706)。他方、動作が終了していない場合(S705でNO)、S702以降の処理を行う。
外乱トルク仮基準値dtを算出した後、感度Kを変更するか否かを判別する(S707)。これは、例えば、教示装置40の入力ボタン42の中に予め設けられた感度Kを設定するためのボタン(以下、「感度設定ボタン」と称する場合がある。)が押されたか否かを判別する処理である。感度設定ボタンが押されたとの情報を取得した場合は肯定判定され、所定期間内に、あるいは所定のタイミングで感度設定ボタンが押されたとの情報を取得しない場合は否定判定される。そして、感度Kを変更する場合(S707でYES)、使用者に感度Kの入力を促す
図5に示した感度設定画面を教示装置40の表示画面41に表示させる(S708)。そして、教示装置40の表示画面41を介して感度Kが入力されたか否かを判別する(S709)。これは、教示装置40の表示画面41に感度Kが入力されたとの情報を取得したか否かを判別する処理である。
【0063】
そして、感度Kが入力された場合(S709でYES)、その感度Kに応じた修正値βを算出し、算出した修正値βに基づいて、外乱トルク基準値dsを算出する(S710)。他方、感度Kが入力されていない場合(S709でNO)、感度Kを取得するまで待機する。外乱トルク基準値dsを算出した後、算出した外乱トルク基準値dsを衝突検知閾値Asに変換し、記憶する(S711)。
【0064】
一方、感度Kを変更しない場合(S707でNO)、感度Kを零として外乱トルク基準値dsを算出し(S710)、算出した外乱トルク基準値dsを衝突検知閾値Asに変換し、記憶する(S711)。
閾値設定部38がこの衝突検知閾値設定処理を行うことで、衝突検知閾値Asが設定される。
【0065】
図8は、外乱トルクdの時間変化と衝突検知閾値As(外乱トルク基準値ds)との関係を示す図である。なお、
図8では、衝突が発生していない場合の外乱トルクdの時間変化を例示している。
使用者は、教示装置40の表示画面41に表示された感度設定画面で感度Kを決定することで、溶接ロボット10の動作プログラムに応じて衝突検知閾値Asを調整することが可能となる。使用者が、例えば感度Kをプラスにすると、
図8に示すように、外乱トルクdの時間変化と近い値に衝突検知閾値As(外乱トルク基準値ds)が設定される。他方、感度Kをマイナスにすると、
図8に示すように、外乱トルクdの時間変化と遠い値に衝突検知閾値As(外乱トルク基準値ds)が設定される。
【0066】
すなわち、使用者は、例えば感度Kをプラスにして、感度Kを零とする場合よりも迅速性に優れた衝突検知とすること、あるいは、感度Kをマイナスにして、感度Kを零とする場合よりも信頼性に優れた衝突検知とすることを選択することが可能となる。
この衝突検知閾値設定処理によれば、衝突検知閾値Asを設定するにあたって、使用者は感度Kを設定するだけであるため、使用者の負担は小さい。つまり、例えば、ある動作プログラムにおける最大外乱トルクdmaxに基づいて、使用者が外乱トルク仮基準値dtを入力しなければならない態様と比べると使用者の負担は小さくなる。また、使用者の入力が少ないため、使用者の入力ミスを減らすことができる。その結果、信頼性の高い衝突検知を実現することができる。
【0067】
また、本実施の形態に係るロボットコントローラ30においては、溶接トーチ11などの種類毎のパラメータを記憶するパラメータ記憶部31と、溶接ロボット10のモデルを導き出すモデル導出部32と、モデル導出部32が導き出したモデルを記憶するモデル記憶部33と、を備えている。そして、ロボットコントローラ30においては、コントローラ35が、このモデル記憶部33から読み込んだ溶接ロボット10のモデルに基づいて必要駆動トルクτ´を算出し、外乱算出部36が、外乱トルクdを算出する。そのため、このロボットコントローラ30によれば、使用者が、溶接ロボット10、溶接トーチ11および送給装置12などの、溶接ロボット10のモデル構築に必要な負荷パラメータを設定しなければならない構成と比べると使用者の負担は小さくなる。また、使用者自身で行う設定が少ないため、使用者の設定ミスを減らすことができる。その結果、信頼性の高い衝突検知を実現することができる。
【0068】
なお、上述した衝突検知閾値設定処理は、ある関節の衝突検知閾値Asを設定する場合にも、全ての関節の衝突検知閾値Asを設定する場合にも用いることができる。
全ての関節の衝突検知閾値Asを設定する場合には、
図7のフローチャートを用いて説明した衝突検知閾値設定処理において、閾値設定部38は、S701にて、最大外乱トルクdmax(n)を初期化する(nは自然数であり、全関節中のn番目の関節を示す。6個の関節を有する場合には、nは、1〜6のいずれかの自然数である。以下、同様)。その後、閾値設定部38は、外乱算出部36にて算出した最新の外乱トルクd(n)を取得し(S702)、取得した外乱トルクd(n)がこの時点での最大外乱トルクdmax(n)よりも大きいか否かを判別する(S703)。そして、取得した外乱トルクd(n)が最大外乱トルクdmax(n)よりも大きい場合(S703でYES)、この外乱トルクd(n)を新たな最大外乱トルクdmax(n)と置き換える(S704)。
【0069】
そして、動作が終了している場合(S705でYES)、最大外乱トルクdmax(n)に予め定められた値の係数α(n)を加算することにより外乱トルク仮基準値dt(n)を算出する(S706)。外乱トルク仮基準値dt(n)を算出した後、感度Kを変更する場合(S707でYES)、使用者に感度K(n)の入力を促す
図5に示した感度設定画面を教示装置40の表示画面41に表示させる(S708)。そして、感度K(n)が入力された場合(S709でYES)、その感度K(n)に応じた修正値β(n)を算出し、算出した修正値β(n)に基づいて、外乱トルク基準値ds(n)を算出する(S710)。他方、感度Kを変更しない場合(S707でNO)、感度K(n)を零として外乱トルク基準値ds(n)を算出する(S710)。外乱トルク基準値ds(n)を算出した後、算出した外乱トルク基準値ds(n)を衝突検知閾値As(n)に変換し、記憶する(S711)。
【0070】
これにより、n番目の関節の外乱トルク仮基準値dt(n)が、dt(n)=dmax(n)+α(n)にて算出され、外乱トルク基準値ds(n)が、ds(n)=dt(n)+β(n)にて算出される。そして、外乱トルク基準値ds(n)が変換されることで、n番目の関節の衝突検知閾値As(n)が定められ、記憶される。
【0071】
なお、係数αは、全ての関節に対して共通な値であってもよい。つまり、S704にて最大外乱トルクdmax(n)が定まった後に、各最大外乱トルクdmax(n)に一つの係数αを加算することにより、外乱トルク仮基準値dt(n)を一括して算出してもよい(dt(n)=dmax(n)+α)。
【0072】
また、修正値βは、全ての関節に対して共通な値であってもよい。つまり、感度Kの入力を促す感度設定画面を教示装置40の表示画面41に表示させた(S708)ことに起因して、使用者が感度Kを入力した場合には(S709でYES)、その感度Kに応じた修正値βを算出し、各外乱トルク仮基準値dt(n)に一つの修正値βを加算することにより、外乱トルク基準値ds(n)を一括して算出してもよい(ds(n)=dt(n)+β)。これにより、使用者の負担はより小さくなる。また、使用者の入力が少ないため、使用者の入力ミスをより減らすことができる。
【0073】
続いて、以上のように構成される溶接ロボットシステム1を用いたワーク溶接物の製造方法について説明する。
本実施の形態の溶接ロボットシステム1では、先ず、教示装置40の表示画面において、溶接ロボット10の使用者が衝突の検知のための感度Kを段階的に設定可能な表示画面(
図5参照)を表示させる。そして、教示装置40においてなされた使用者の段階的な感度Kの設定を認識する。教示装置40にて認識した感度Kは、ロボットコントローラ30の閾値設定部38に入力される。ロボットコントローラ30の閾値設定部38では、設定された段階的な感度Kの設定に基づいて衝突検知閾値Asを定める。
そして、溶接ロボットシステム1では、ロボットコントローラ30に衝突検知閾値Asを記憶するとともに、溶接ロボット10を用いてワークの溶接を行う。
【0074】
溶接ロボットシステム1では、ワークの溶接を実行しながら、ロボットコントローラ30の外乱算出部36にて、コントローラ35から入力されるトルクと、溶接ロボット10のエンコーダから入力される関節角度θなどに基づいて外乱トルクdを算出する。そして、比較部39では、衝突評価量Aに変換した外乱トルクdと、衝突検知閾値Asとに基づいて、溶接ロボット10が衝突しているか否かを判別する。コントローラ35は、溶接ロボット10が衝突している旨の通知を受けた場合には、溶接ロボット10の動作を停止するべく、必要駆動トルクτ´を零とするなどの処理が実行される。
【0075】
以上のように、本実施形態の溶接ロボットシステム1では、衝突検知閾値Asを設定するにあたって、使用者は感度Kを設定するだけであるため、使用者の負担は小さい。また、使用者の入力が少ないため、使用者の入力ミスを減らすことができる。その結果、信頼性の高い衝突検知を実現することができる。
【0076】
なお、本実施の形態に係るロボットコントローラ30の閾値設定部38は、衝突検知閾値Asを設定する閾値設定手段としての機能と、衝突検知閾値Asの設定に先だち、使用者が衝突の検知のための感度Kのレベルを段階的に設定できるユーザインタフェースの一例としての感度設定画面を提供する提供手段としての機能と、感度設定画面によってなされた使用者の段階的な感度Kのレベルの設定を認識する認識手段としての機能とを有する。しかしながら、かかる態様に限定されない。
例えば、感度設定画面を提供する機能を有する提供部を閾値設定部38とは別に備え、閾値設定部38は、この提供部に、教示装置40に感度設定画面を表示する旨の指示を出力するようにしてもよい。また、例えば、感度設定画面によってなされた使用者の段階的な感度Kのレベルの設定を認識する機能を有する認識部を閾値設定部38とは別に備え、閾値設定部38は、認識部からの情報を基に、感度設定画面を介して設定された感度Kを認識するようにしてもよい。
【0077】
また、本実施の形態では、外乱トルク仮基準値dtを設定する際、最大外乱トルクdmaxに予め定められた係数αを加算するが、これに限定されるものではない。得られた最大外乱トルクdmaxに予め定めた誤差値を加味することができれば良く、例えば最大外乱トルクdmaxに予め定めた係数を乗算するようにしてもよい。
同様に、本実施の形態では、外乱トルク基準値dsを算出する際に、例えば外乱トルク仮基準値dtに修正値βを加算しているが、これに限定されるものではない。例えば、感度Kに応じて設定される予め定めた修正値を外乱トルク仮基準値dtに乗算するように構成してもよい。
【0078】
さらに、本実施の形態では、外乱トルク仮基準値dtを設定する際に、ある動作プログラムに基づいて溶接ロボット10を動かしたときの外乱トルクdの最大値に基づいて行っているが、これに限定されない。例えば、あるプログラムに基づく溶接ロボット10の作動を複数回実施し、複数の実施によって得られた外乱トルクdの最大値の平均値を外乱トルク仮基準値dtの算出に用いるようにしてもよい。
【0079】
さらに、本実施の形態では、
図7のフローチャートを用いて説明したように、外乱トルク仮基準値dtの算出、感度Kの設定、設定された感度Kに応じた外乱トルク基準値dsの算出、算出した外乱トルク基準値dsの衝突検知閾値Asへの変換・記憶を、連続して行っているが特にかかる態様に限定されない。
外乱トルク仮基準値dtの算出、暫定的に感度Kを零とした外乱トルク基準値dsの算出、算出した外乱トルク基準値dsの衝突検知閾値Asへの変換・記憶を行った後に、使用者が好む任意のタイミングで感度Kを変更できるようにしてもよい。かかる場合、暫定的に感度Kを零として算出された外乱トルク基準値dsに応じた衝突検知閾値Asを、使用者により変更された感度Kに応じた外乱トルク基準値dsに応じた衝突検知閾値Asに変更し、これを記憶すればよい。
【0080】
このようにすれば、使用者に溶接ロボットシステム1を納入し、据え付けた状態で、暫定的に感度Kを零として外乱トルク基準値dsを算出して衝突検知閾値Asを設定しておき、後に、教示プログラムで溶接ロボット10に動作を教示しているときなどに感度Kを変更できるようにするとよい。例えば、使用者が好む任意のタイミングで感度設定ボタンを押すことができるようにしておき、感度設定ボタンが押されたら、
図7のフローチャートにおけるS708以降の処理を実行すればよい。
【0081】
<第2の実施形態>
第2の実施形態特に係る閾値設定部38は、例えば、1つの動作プログラム中に、複数の動作が含まれている場合は動作毎に衝突検知閾値Asを設定する点が、第1の実施形態に係る閾値設定部38と異なる。その他は、第1の実施形態と同じであるので、以下では、異なる点について説明する。
【0082】
図9は、ある動作プログラムを実行した場合の、溶接ロボット10に装着された溶接トーチ11の先端の移動形態を模式的に示す図である。
この動作プログラム実行による溶接ロボット10の動作は以下の通りである。先ず、溶接トーチ11の先端位置が初期位置P0に存在するように溶接ロボット10が位置決めされ、次いで、溶接位置P1、P2、P3の順に位置決めされて各溶接位置においてアーク溶接を行い、溶接位置P3での溶接終了後に終了位置P4に退避する。
【0083】
図10は、
図9に示す動作形態における、衝突が発生していない場合の外乱トルクdの時間変化を示す図である。
図10に示すように、溶接ロボット10が各溶接位置P1、P2、P3間を移動する際の外乱トルクdは、その区間以外(初期位置P0〜溶接位置P1、溶接位置P3〜終了位置P4)を移動する際の外乱トルクdよりも一般に小さくなる。これは溶接ロボット10が各溶接位置P1、P2、P3間を移動する際の速度は、その区間以外(初期位置P0〜溶接位置P1、溶接位置P3〜終了位置P4)を移動する際の速度よりも小さく設定されていることに起因している。
【0084】
第1の実施形態のように、溶接ロボット10の動作プログラム毎に衝突検知閾値Asを設定する場合、
図9を用いて示した動作形態では、最大外乱トルクdmaxは、各溶接位置P1、P2、P3間以外の、初期位置P0〜溶接位置P1、溶接位置P3〜終了位置P4を移動する際に生じ、この最大外乱トルクdmaxに基づいて衝突検知閾値Asが設定されることとなる。
【0085】
図11は、
図9を用いて示した動作形態における衝突発生前後の外乱トルクdの時間変化を示す図である。
図11では、溶接位置P2〜P3間で衝突が発生した場合を例示している。
図11に示すように、衝突検知閾値As(外乱トルク基準値ds)が衝突発生直前の外乱トルクdと比べて非常に高くなってしまうために、衝突の発生からその検知までに時間がかかってしまうおそれがある。
【0086】
そこで、溶接ロボット10を動作させるための1つの動作プログラム中に、複数の動作が含まれている場合は動作毎に衝突検知閾値Asを設定してもよい。例えば、
図9を用いて示した動作形態においては、初期位置P0〜溶接位置P1間を移動する動作、溶接位置P1〜P2間を移動する動作、溶接位置P2〜P3間を移動する動作、溶接位置P3〜終了位置P4間を移動する動作毎に衝突検知閾値Asを設定してもよい。
【0087】
次に、フローチャートを用いて、第2の実施形態に係る閾値設定部38が行う衝突検知閾値設定処理の手順について説明する。
図12−1および
図12−2は、第2の実施形態に係る閾値設定部38が行う衝突検知閾値設定処理の手順を示すフローチャートである。
図12−1および
図12−2に示すフローチャートは、
図9を用いて示した動作形態における衝突検知閾値Asを設定するものである。以下では、
図9を用いて示した動作形態における、初期位置P0〜溶接位置P1間を移動する動作を第1区間動作、溶接位置P1〜P2間を移動する動作を第2区間動作、溶接位置P2〜P3間を移動する動作を第3区間動作、溶接位置P3〜終了位置P4間を移動する動作を第4区間動作とする。
閾値設定部38は、溶接ロボット10を実際の動作プログラムに従い動作を開始させた後に衝突検知閾値設定処理を実行する。
【0088】
先ず、第1区間動作における最大外乱トルクd1maxを初期化する(S1201)。その後、外乱算出部36にて算出した第1区間動作における最新の外乱トルクd1を取得し(S1202)、取得した外乱トルクd1がこの時点での最大外乱トルクd1maxよりも大きいか否かを判別する(S1203)。そして、取得した外乱トルクd1が最大外乱トルクd1maxよりも大きい場合(S1203でYES)、この外乱トルクd1を新たな最大外乱トルクd1maxと置き換え(S1204)、第1区間動作が終了したか否かを判別する(S1205)。他方、取得した外乱トルクd1が最大外乱トルクd1max以下の場合(S1203でNO)、S1205以降の処理を行う。
【0089】
第1区間動作が終了している場合(S1205でYES)、最大外乱トルクd1maxに第1区間動作の係数αとして予め定められた値の係数α1を加算することにより外乱トルク仮基準値dt1を算出する(S1206)。他方、第1区間動作が終了していない場合(S1205でNO)、S1202以降の処理を行う。
外乱トルク仮基準値dt1を算出した後、感度K1を変更するか否かを判別する(S1207)。そして、感度K1を変更する場合(S1207でYES)、使用者に第1区間動作における感度K1の入力を促す感度設定画面を教示装置40の表示画面41に表示させる(S1208)。そして、教示装置40の表示画面41を介して感度K1が入力されたか否かを判別する(S1209)。これは、教示装置40の表示画面41に感度K1が入力されたとの情報を取得したか否かを判別する処理である。
【0090】
そして、感度K1が入力された場合(S1209でYES)、その感度K1に応じて設定された修正値β1に基づいて、外乱トルク仮基準値dt1を修正して第1区間動作の外乱トルク基準値ds1を算出する(S1210)。他方、感度K1が入力されていない場合(S1209でNO)、感度K1を取得するまで待機する。外乱トルク基準値ds1を算出した後、算出した外乱トルク基準値ds1を第1区間動作の衝突検知閾値As1に変換し、記憶する(S1211)。
一方、感度K1を変更しない場合(S1207でNO)、感度K1を零として外乱トルク基準値ds1を算出し(S1210)、算出した外乱トルク基準値ds1を衝突検知閾値As1に変換し、記憶する(S1211)。
【0091】
衝突検知閾値As1を記憶した後、第2区間動作における最大外乱トルクd2maxを初期化する(S1221)。その後、外乱算出部36にて算出した第2区間動作における最新の外乱トルクd2を取得し(S1222)、取得した外乱トルクd2がこの時点での最大外乱トルクd2maxよりも大きいか否かを判別する(S1223)。そして、取得した外乱トルクd2が最大外乱トルクd2maxよりも大きい場合(S1223でYES)、この外乱トルクd2を新たな最大外乱トルクd2maxと置き換え(S1224)、第2区間動作が終了したか否かを判別する(S1225)。他方、取得した外乱トルクd2が最大外乱トルクd2max以下の場合(S1223でNO)、S1225以降の処理を行う。
【0092】
第2区間動作が終了している場合(S1225でYES)、最大外乱トルクd2maxに第2区間動作の係数αとして予め定められた値の係数α2を加算することにより第2区間動作の外乱トルク仮基準値dt2を算出する(S1226)。他方、第2区間動作が終了していない場合(S1225でNO)、S1222以降の処理を行う。
外乱トルク仮基準値dt2を算出した後、感度K2を変更するか否かを判別する(S1227)。そして、感度K2を変更する場合(S1227でYES)、使用者に第2区間動作における感度K2の入力を促す感度設定画面を教示装置40の表示画面41に表示させる(S1228)。そして、教示装置40の表示画面41を介して感度K2が入力されたか否かを判別する(S1229)。これは、教示装置40の表示画面41に感度K2が入力されたとの情報を取得したか否かを判別する処理である。
【0093】
そして、感度K2が入力された場合(S1229でYES)、その感度K2に応じて設定された修正値β2に基づいて、外乱トルク仮基準値dt2を修正して第2区間動作の外乱トルク基準値ds2を算出する(S1230)。他方、感度K2が入力されていない場合(S1229でNO)、感度K2を取得するまで待機する。外乱トルク基準値ds2を算出した後、算出した外乱トルク基準値ds2を第2区間動作の衝突検知閾値As2に変換し、記憶する(S1231)。
一方、感度K2を変更しない場合(S1227でNO)、感度K2を零として外乱トルク基準値ds2を算出し(S1230)、算出した外乱トルク基準値ds2を衝突検知閾値As2に変換し、記憶する(S1231)。
【0094】
衝突検知閾値As2を記憶した後、第3区間動作における最大外乱トルクd3maxを初期化する(S1241)。その後、外乱算出部36にて算出した第3区間動作における最新の外乱トルクd3を取得し(S1242)、取得した外乱トルクd3がこの時点での最大外乱トルクd3maxよりも大きいか否かを判別する(S1243)。そして、取得した外乱トルクd3が最大外乱トルクd3maxよりも大きい場合(S1243でYES)、この外乱トルクd3を新たな最大外乱トルクd3maxと置き換え(S1244)、第3区間動作が終了したか否かを判別する(S1245)。他方、取得した外乱トルクd3が最大外乱トルクd3max以下の場合(S1243でNO)、S1245以降の処理を行う。
【0095】
第3区間動作が終了している場合(S1245でYES)、最大外乱トルクd3maxに第3区間動作の係数αとして予め定められた値の係数α3を加算することにより第3区間動作の外乱トルク仮基準値dt3を算出する(S1246)。他方、第3区間動作が終了していない場合(S1245でNO)、S1242以降の処理を行う。
外乱トルク仮基準値dt3を算出した後、感度K3を変更するか否かを判別する(S1247)。そして、感度K3を変更する場合(S1247でYES)、使用者に第3区間動作における感度K3の入力を促す感度設定画面を教示装置40の表示画面41に表示させる(S1248)。そして、教示装置40の表示画面41を介して感度K3が入力されたか否かを判別する(S1249)。これは、教示装置40の表示画面41に感度K3が入力されたとの情報を取得したか否かを判別する処理である。
【0096】
そして、感度K3が入力された場合(S1249でYES)、その感度K3に応じて設定された修正値β3に基づいて、外乱トルク仮基準値dt3を修正して第3区間動作の外乱トルク基準値ds3を算出する(S1250)。他方、感度K3が入力されていない場合(S1249でNO)、感度K3を取得するまで待機する。外乱トルク基準値ds3を算出した後、算出した外乱トルク基準値ds3を第3区間動作の衝突検知閾値As3に変換し、記憶する(S1251)。
一方、感度K3を変更しない場合(S1247でNO)、感度K3を零として外乱トルク基準値ds3を算出し(S1250)、算出した外乱トルク基準値ds3を衝突検知閾値As3に変換し、記憶する(S1251)。
【0097】
衝突検知閾値As3を記憶した後、第4区間動作における最大外乱トルクd4maxを初期化する(S1261)。その後、外乱算出部36にて算出した第4区間動作における最新の外乱トルクd4を取得し(S1262)、取得した外乱トルクd4がこの時点での最大外乱トルクd4maxよりも大きいか否かを判別する(S1263)。そして、取得した外乱トルクd4が最大外乱トルクd4maxよりも大きい場合(S1263でYES)、この外乱トルクd4を新たな最大外乱トルクd4maxと置き換え(S1264)、第4区間動作が終了したか否かを判別する(S1265)。他方、取得した外乱トルクd4が最大外乱トルクd4max以下の場合(S1263でNO)、S1265以降の処理を行う。
【0098】
第4区間動作が終了している場合(S1265でYES)、最大外乱トルクd4maxに第4区間動作の係数αとして予め定められた値の係数α4を加算することにより第4区間動作の外乱トルク仮基準値dt4を算出する(S1266)。他方、第4区間動作が終了していない場合(S1265でNO)、S1262以降の処理を行う。
外乱トルク仮基準値dt4を算出した後、感度K4を変更するか否かを判別する(S1267)。そして、感度K4を変更する場合(S1267でYES)、使用者に第4区間動作における感度K4の入力を促す感度設定画面を教示装置40の表示画面41に表示させる(S1268)。そして、教示装置40の表示画面41を介して感度K4が入力されたか否かを判別する(S1269)。これは、教示装置40の表示画面41に感度K4が入力されたとの情報を取得したか否かを判別する処理である。
【0099】
そして、感度K4が入力された場合(S1269でYES)、その感度K4に応じて設定された修正値β4に基づいて、外乱トルク仮基準値dt4を修正して第4区間動作の外乱トルク基準値ds4を算出する(S1270)。他方、感度K4が入力されていない場合(S1269でNO)、感度K4を取得するまで待機する。外乱トルク基準値ds4を算出した後、算出した外乱トルク基準値ds4を第4区間動作の衝突検知閾値As4に変換し、記憶する(S1271)。
一方、感度K4を変更しない場合(S1267でNO)、感度K4を零として外乱トルク基準値ds4を算出し(S1270)、算出した外乱トルク基準値ds4を衝突検知閾値As4に変換し、記憶する(S1271)。
【0100】
なお、この第2の実施形態では、各区間で、最大外乱トルクdmax、外乱トルク仮基準値dtを算出しているが特にかかる態様に限定されない。例えば、全区間で共通の最大外乱トルクdmaxあるいは外乱トルク仮基準値dtとし、感度Kのみを動作毎に変更するようにしてもよい。
【0101】
また、上述した実施の形態においては、溶接ロボット10としてアーク溶接を行うロボットを例示したが、アーク溶接を行うロボットに限定されない。例えば、スポット溶接を行うロボットに対して、本実施の形態に係るロボットコントローラ30および教示装置40を適用してもよい。また、溶接以外の用途に用いるロボットに対して、本実施の形態に係るロボットコントローラ30および教示装置40を適用してもよい。