JP4756618B2 - 多関節ロボットにおける衝突検出・停止制御法 - Google Patents

多関節ロボットにおける衝突検出・停止制御法 Download PDF

Info

Publication number
JP4756618B2
JP4756618B2 JP2001081553A JP2001081553A JP4756618B2 JP 4756618 B2 JP4756618 B2 JP 4756618B2 JP 2001081553 A JP2001081553 A JP 2001081553A JP 2001081553 A JP2001081553 A JP 2001081553A JP 4756618 B2 JP4756618 B2 JP 4756618B2
Authority
JP
Japan
Prior art keywords
joint
torque
robot
collision
speed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001081553A
Other languages
English (en)
Other versions
JP2002283276A (ja
Inventor
泰宏 神品
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Daihen Corp
Original Assignee
Daihen Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Daihen Corp filed Critical Daihen Corp
Priority to JP2001081553A priority Critical patent/JP4756618B2/ja
Publication of JP2002283276A publication Critical patent/JP2002283276A/ja
Application granted granted Critical
Publication of JP4756618B2 publication Critical patent/JP4756618B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Numerical Control (AREA)
  • Manipulator (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は多関節ロボットにおける衝突検出・停止制御法に係り、詳しくは、ロボットが稼働中にワーク等の外界の対象物や障害物等に衝突すれば、それをいち早くかつ精度よく検出し、その後速やかにロボットの動きを止めたり力を解放して、ロボット本体やツールの変形,損傷を回避できるようにしたロボットの制御法に関するものである。
【0002】
【従来の技術】
複数の関節からなるロボットのリンクやロボットの先端に把持されたツールもしくはワークが、教示データに基づいて再生動作しているときやティーチペンダントによる教示操作で動いているとき、意図することなく加工対象物や周辺の障害物に当たることがある。再生動作中であれば、ロボットの各関節を駆動するそれぞれのモータは指令値の通りに、また教示中でも衝突に気づかず教示を続ければ、ロボットは当然に障害物等を突破してでも動こうとする。その結果、関節によっては過大なトルクが発生し、それに伴ってリンクやツールが変形したり関節等のロボットの可動部を損傷させるといった事態を招く。
【0003】
ロボットに教示された作業データの再生動作を実行させる各モータを制御するためのそれぞれのサーボドライバには、例えば図14に示すように、位置や速度の制御系が組み込まれ、図示しない制御装置(ロボットコントローラ)から与えられる位置指令にモータ1の動作を追従制御させ、作業データの再生動作が実行されるようにしている。また、各サーボドライバ2には速度制御系の後にトルク制限器3が配置され、速度制御によって生成されるトルク指令を任意の値で制限しておくことができるようにもなっている。
【0004】
この制御系から分かるように、一番外側のループである位置フィードバック系のエラー成分、すなわち位置指令から位置フィードバック値を差し引いた大きさ(位置の偏差)を監視すれば、衝突の有無を検出することができる。その最も基本的なものは、図15に示すように、位置制御ループにおける加算器4の直後からモータ1の位置をフィードバック制御した結果得られる位置偏差を取り出し、比較器5で「位置偏差のしきい値」である各関節における判定値6と比較して、大きければ衝突が発生したと判定するというものである。
【0005】
このような制御によれば、ショックセンサトーチがぶつかるとスイッチが入りサーボ電源が落ちる仕組みになっていたり、機械式の衝突検出機構が装備されている検出装置など従来から存在するものに比べれば、ロボットとして必要最小限の構成要素であるモータさえ備えることで、すなわち衝突センサを有しなくてもロボットコントローラに衝突検出ソフトを搭載するだけで衝突を検出することが可能となる。従って、ロボット本体の機構の複雑化をきたさないようにしておくことができる。
【0006】
衝突を検出する別の方法として、特許第2,749,724号に記載された外乱推定オブザーバを用いた衝突検出方法がある。これは、各サーボドライバの中に外乱トルクを観測するオブザーバを備え、実際にモータが回そうとしているイナーシャはどれくらいの大きさのものであるかを内部に持つモデルによって推定すると共に衝突により生じた外乱トルクを検出し、その外乱トルクの推定値に対する大小を見て衝突の有無を判定しようとするものである。
【0007】
すなわち、内部でモデル化することにより或る指令値に対してどのような挙動をするかを予測し、その予測挙動と実際の挙動とを突き合わせることによって先読み補償するという思想である。従って、イナーシャがモデル化できていればトルク予測は可能であり、イナーシャに変動がなければ高い精度で衝突を検出することができるはずである。複数の関節を備えたモデル化はともかくとして、単一の関節だけで扱うとすればイナーシャのモデル化は容易であるからである。
【0008】
このように、衝突の検出はぶつかったことによるサーボの状態変数の変化があって始めて可能となり、各モータ単位で検出されるトルクの変動によって衝突を感知しているのである。
【0009】
ところで、衝突を検出した後にロボットの動きを止める必要があるが、その停止のためにはいずれの関節においても可能なかぎりの大きさのトルクを発生させれば迅速に制動できるとの考えから、トルク制限器には最大トルク値が設定されるのが一般的である。最大トルクとはそれぞれのモータにおいて発生することができる最大のトルクを意味していることは言うまでもない。
【0010】
具体的には、位置フィードバックゲインを0とすることで速度制御系への指令を強制的に0とし、速度0を目標値とした速度フィードバック制御を行うことにより停止処理を行う。停止のための減速に使用するトルクは、速度制御系の後に配置されたトルク制限器により常にモータの最大許容トルクまで可能となっている。
【0011】
【発明が解決しようとする課題】
ところが、前記した図15の衝突検出システムにおいては、いずれかの関節の位置のエラー成分が十分に蓄積されなければ、衝突を検出したと認識することができない。それがために、衝突を検出した時点では既にモータが大きなトルクを発生した状態となっており、ロボット本体やツールの変形・損傷を可及的に少なくすることはできない。すなわち、衝突を検出することはできても、その時点で手遅れの状態になっているのである。
【0012】
例示すれば、図2に示した第3関節73 が第3リンクL3 を破線のごとく真っ直ぐな姿勢に保持しようとしていても、例えば第2関節72 によって押されれば障害物8に当たる。第3リンクL3 は障害物8によって実線のように動かされようとするがフィードバック制御が効いているので、第3関節L3 を駆動しているモータ13 が直ちに最大トルクで真っ直ぐな位置へ戻そうとする。当然に干渉力は増大し、大きな力が相互に作用することになってしまう。
【0013】
図15にも表されているように、サーボドライバー2にはトルク制御、その外側に速度制御、最外側に位置制御があるので、衝突に対して一番鋭敏なのはトルクとなる。その次に速度であり、一番鈍感なのが位置である。それゆえ、位置偏差で衝突を検出しようとすると、以下に述べる欠点は覆いようがない。
【0014】
フィードバック制御においては速度やトルクを発生させるために位置偏差が常に存在しており、それが高速でしかも大きな加速度で動作するとき大きくなることは言うまでもない。一方、ゆっくりと動作する場合には、障害物に当たったときでも位置偏差が小さい。
【0015】
そこで、小さな位置偏差で衝突であると判定させるようにしておくと、速い速度,大きい加速度で動作するときには小さな位置偏差を直ちに越えてしまうので衝突を誤検出することが多く、ロボットは止まってばかりで使い物にならなくなる。逆に、大きな位置偏差で衝突であると判定させるようにしておくと、遅い速度,小さな加速度で動くときには十分に行き過ぎなければ衝突を検出できなくなる。
【0016】
これから分かるように、通常考えられる一番厳しい動かし方をしても衝突と誤認識しないだけの大きな設定値を入れざるを得なくなり、位置偏差をもとにした衝突の検出は鈍感なものとなってしまう。
【0017】
特許第2,749,724号のように外乱推定オブザーバを使用した場合、そのオブザーバは一般的には速度ループに組み込まれる。これはサーボドライバにおいての話であるから各関節レベルで外乱を検出することになる。単一の関節だけで扱うとすればイナーシャのモデル化は容易であるが、複数の関節を持つ場合のモデル化は極めて難しく、多関節ロボットにおいては、衝突検出精度を十分に高く確保することが困難であると言える。
【0018】
複数の関節からなるロボットでは、その関節を駆動する任意のモータを同じ速度パターンで動作させても、モータが発生するトルクは、ロボットの姿勢によって異なるという特性を持つ。ロボットの関節位置すなわちロボットの姿勢や各関節の速度・加速度の状態により、モータが駆動すべき負荷イナーシャやモータが受ける外乱トルクが変動してしまうためである。
【0019】
言うまでもないが、ロボットは腕を伸ばせばイナーシャが大きくなり、短くすれば小さくなる。外乱推定オブザーバによる場合は高次数の制御となるゆえ、複数の関節でオブザーバを定義することが現実には不可能に近い。オブザーバの精度に要求される項目として、遠心力やコリオリ力等によっても生じる関節間の干渉が挙げられる。一つの関節でならこれらの速度の2乗項はたいした影響を持たないが、複数の関節からなる場合その影響は大きくなる。重力加速度による外乱トルクもロボットの姿勢が変われば変化する。回転半径が変わると重力によるモーメントも変わってくる。
【0020】
衝突の検出は、ぶつかったことによるサーボの状態変数の変化があって始めて可能となる。外乱推定オブザーバはサーボドライバに組み込まれるので外乱の検出はあくまでドライバレベルであり、従って衝突を感知するのは各モータ単位で検出されるトルクの変動であって、それは各関節レベルでの外乱検出にとどまることになる。
【0021】
実際問題としてモータの先端にどのような制御対象物が存在するか分かっていなければならないが、一つの関節レベルで外乱トルクを検出するといってもイナーシャ変動のない場合には正常に検出できても、イナーシャ変動のある場合やイナーシャ変動の避けられない多関節ロボットにおいては、そのトルク変動があったとき何処までが起こるべくして起こったものか、それとも衝突によって起こったものかは区別をつけがたい。すなわち、複数の関節があるとき上記した負荷イナーシャの変動に加えて、次に掲げる三つの外乱トルクが存在するからであり、その判定は難しい。
【0022】
複数の関節からなるロボットの各関節が受ける外乱トルクの種類は、以下の三つである。一つは、他の関節の加速度運動より受ける干渉トルク(ロボットの関節位置・加速度により変化する)であり、二つ目は、遠心力やコリオリ力による外乱トルク(ロボットの関節位置・速度により変化する)である。そして、三つ目は、重力加速度による外乱トルク(ロボットの関節位置により変化する)である。
【0023】
前述したごとく、トルクは衝突の検出において最も鋭敏であるが、これを検出の対象とする外乱推定オブザーバといえども、イナーシャ変動までは把握し得ない。なぜなら関節ごとに機能するからであり、他の関節を駆動するモータの状態と連動した上記の負荷イナーシャや外乱トルクの変動を考慮することができず、衝突によって発生した外乱トルクのみを精度よく抽出することは困難となる。このような事情を踏まえると、多関節ロボットの場合に厳密さを求めるにはまだ幾つかの課題が残されていると言わざるを得ない。
【0024】
ところで、前述したごとく、衝突後にロボットを止める際速度0を目標とした速度フィードバック制御を行うことにしているが、積分項が機能しているためにトルクは依然として発生し、それが大きくなることは避けられない。なぜなら、モータに最大トルクまで発揮させてもよいとしているのが一般的であり、モータが大きい力を発揮すれば、ロボットと障害物との間に大きな力が掛かることは必然的に起こるからである。すなわち、干渉があったときの逃げ動作が最大トルクで妨げられることになり、衝突による干渉力を全くと言ってよいほど軽減できなくなる問題がある。
【0025】
ちなみに、衝突発生時にトルク制限器を0に設定することはできない。ぶつかっているといえども慣性力があるので、慣性力に対して制動するのは摩擦だけということになり、制動力が著しく低下する。それだけでなく、停止している関節についても、衝突による衝撃力や他の関節から受ける干渉トルクによる関節の運動を制動できなくなるからである。
【0026】
本発明は上記した問題に鑑みなされたもので、その目的は、大きく分けて以下に記す二つの課題を克服する多関節ロボットにおける衝突検出・停止制御法を提供することである。第一の課題は、関節駆動トルクが非線形的に変動する複数の関節からなるロボットにおいても、衝突により発生する関節駆動トルクの変動から衝突が発生したことを高精度かつ短時間に検出することである。すなわち、衝突を感知しているのは各モータ単位で検出されるトルクの変動であるが、できるだけ厳密な計算をして衝突によるものか否かを見極めることができるようにしようとするのである。
【0027】
第二の課題は、ロボットの衝突検出後の停止処理において、衝突による障害物からの干渉力を和らげ、ロボット本体やぶつかった対象物の損傷を最小限に抑えることである。言い換えれば、大きな慣性力を持っていない関節もしくは速度が発生していない関節については、力方向に逃げる仕組みを提案しようとするものである。
【0028】
【課題を解決するための手段】
本発明は、複数の関節からなるロボットのリンクやリンク先端に把持されたツールまたはワークが周辺の障害物等に衝突したとき、リンク等の変形やロボット可動部の損傷を回避すべく衝突したことを検出しかつ直ちにロボットを停止させる方法に適用される。その特徴とするところは、図1を参照して、ロボットの各関節駆動用モータ11 ,12 ,13 を制御するためのサーボドライバ21 ,22 ,23 が検出したモータの位置θm・速度θd m・加速度θddmから、衝突が発生していない場合に各モータが発生すべきトルクT1 ,T2 ,T3 を、ロボットの各関節の位置θ、速度θd 、加速度θddとロボット機構パラメータとをもとにした
【数3】
で示す式に基づく逆動力学演算により予測する。そのトルク予測値と実際の関節駆動トルクTcとの差分ΔTを求める。差分ΔTの絶対値が予め設定された判定値εより大きい場合に衝突が発生したものと見做す。そして、複数の関節のうち停止もしくは低速で動作している関節あるいは慣性力が小さいため動作停止に必要なトルクが最大トルクと比較して十分小さい関節は、衝突があった後に衝突による干渉力を和らげるべく逃げ動作できるようにしたことである。
【0029】
ロボットの停止処理をするにあたり、衝突発生時の各関節の速度と負荷イナーシャからロボットの動作を停止させるために必要な最小限のトルク値を関節ごとに算出し、その最小限のトルク値をサーボドライバのトルク制限器3に設定すると共に全てのサーボドライバの位置フィードバック比例ゲインKppを0とし、強制的に速度指令値を0とした速度フィードバック制御による減速処理を行わせるようにする。
【0030】
ロボットの動作を停止させるために必要な各関節のトルク値の算出にあたっては、全ての関節が同じ時間で停止すると仮定して、関節ごとに減速停止時間tmd1 ,tmd2 ,tmd3 を算出したうえで、全ての減速停止時間のうちの最大値をいずれの関節の減速停止時間にも充てるようにすることが好ましい。
【0031】
衝突が発生していない場合に各関節を駆動するモータが発生すべきトルクを予測するとき使用されるモータの位置・速度・加速度として、図9に示すように、サーボドライバ21 ,22 ,23 に位置指令すべく予め教示されている作業データの再生動作により演算した関節位置θと、その関節位置をもとにして計算された速度θd および加速度θddを採用してもよい。
【0032】
逆動力学演算においては、ロボットの関節数をnとすれば、ロボットの各関節の加速度により各関節で発生するトルクならびに他の関節の加速度により発生する干渉トルクを示すn×nの慣性行列、遠心力とコリオリ力の影響を示すn×1の粘性行列、および重力加速度の影響により発生するトルクを示すn×3の重力行列が含まれる。
【0033】
n×nの慣性行列における対角要素としての「関節の持つ加速度が該関節自体に及ぼすトルクの関係を示した慣性モーメント」には、減速機を含むモータロータの慣性モーメントが減速比の2乗倍して加算され、各関節内における減速機を含むモータロータの慣性モーメントにより発生するトルクを考慮できるようにしている。
【0034】
逆動力学演算に供される式に、
【数4】
ただし、Cmi 関節iにおける減速機の動粘性係数
(i=1,2,・・・n 以下同じ)
θdi 関節iにおけるモータの速度応答
Fcou i 関節iにおける減速機のクーロン摩擦トルク
sgn (θdi ) 符号関数
= 1 ; θd m>0のとき
= 0 ; θd m=0のとき
=−1 ; θd m<0のとき
を加算しておき、各関節内のモータ軸受や減速機の摩擦抵抗を考慮することができるようにしておくとよい。
【0035】
ロボットの機構パラメータには、各関節に連結されるリンクの重心位置・質量・長さが含まれていればよい。さらに、慣性テンソルも付加されているならば、より一層好ましい。
【0036】
トルク予測値との差分を求めるときの実際の関節駆動トルクには、実際にサーボドライバが生成したトルク指令値から算出されるトルクを充てておけばよい。
【0037】
各モータにおけるトルク応答値から算出されるトルクを採用すれば、衝突検出精度はより一層高められる。
【0038】
【発明の実施の形態】
以下に、本発明に係る多関節ロボットにおける衝突検出・停止制御法を、その実施の形態を表した図面を参照しながら詳細に説明する。まず、本発明が適用される例としてのアーク溶接ロボットの構成の概略、ならびにリンクを連結している関節を駆動するモータの制御から述べる。なお、本発明は、ロボットが作業中にワーク等の外界の対象物やその他の障害物に衝突したとき、いち早くかつ精度よく衝突のあったことを検出し、以後速やかにロボットの動きを止めたりリンクに作用する力の全部もしくは一部を解放して、ロボット本体やツールもしくはワークの変形や損傷等を軽減または回避できるようにしようとするものである。
【0039】
詳細は図や表をもとにして後述するが、複数の関節からなるロボットにおけるいずれかのリンクの逃げ動作を概略的に示す図2を参照して、本発明の基盤となるところを説明する。この例は三つの関節71 ,72 ,73 からなるロボット10であり、第1関節71 および第2関節72 の高速動作中に第3リンクL3 が障害物8に衝突した場合を表している。述べるまでもないが、図中の矢印9のように、停止しているか動きの少ない第3関節73 が衝突による干渉力を和らげる方向に回転すれば、ロボット全体としての衝突による衝撃をおおいに緩和することができる。
【0040】
ところで、従来技術の項でも触れたが、関節駆動トルクが非線形的に変動する複数の関節からなるロボットにおいては、衝突が発生していないときでも以下の要因を考慮して、各関節が発生するトルク値を正確に予測しておくことが重要である。それらをもとにして、衝突が原因で発生する関節駆動トルクの変動を検出すれば、衝突の発生したことを高精度かつ短時間に検出することができるようになるからである。
【0041】
その要因とは、(1) ロボット各関節の位置の変化により生じる負荷イナーシャの変動(「イナーシャ変動」という)、(2) ロボット各関節の位置・加速度の変化により生じる他の関節の加速度運動から受ける干渉トルクの変動(「加速度の干渉」という)、(3) ロボット各関節の位置・速度の変化により生じる遠心力やコリオリ力からなる外乱トルクの変動(「速度の干渉」という)、(4) ロボット各関節の位置変化により生じる重力加速度の影響による外乱トルクの変動(「重力の干渉」という)の四つである。
【0042】
本発明の最初の例を説明する制御ブロック線図は、図1に表されている。複数の関節を持つ図2に示したロボット10のリンクL1 ,L2 ,L3 やリンク先端に把持されたツールまたはワーク(図示せず)が、周囲の障害物8に衝突したときリンクやツールの変形を防止しさらには関節等のロボット可動部の損傷を回避すべく、図1中の衝突検出部11で衝突したことを検出し、かつ直ちに停止処理部12においてロボットを停止させることができるようになっている。なお、3つの関節それぞれのためにモータ11 ,12 ,13 が装備され、そのモータごとにロボットコントローラ13からの指令を受けて動作するサーボドライバ21 ,22 ,23 が準備されている。
【0043】
本発明に係る制御における衝突検出処理の主たるところは、以下の工程からなる。まず、ロボットの関節駆動用の各モータを制御するサーボドライバ21 ,22 ,23 が検出したモータの位置θm1 ,θm2 ,θm3 、速度θd 1 ,θd 2 ,θd 3 、加速度θdd1 ,θdd2 ,θdd3 から、衝突が発生していない場合に各モータが発生しているはずのトルクT1 ,T2 ,T3 を、後述する逆動力学演算によって予測する。
【0044】
次に、そのトルク予測値T1 ,T2 ,T3 と、実際の関節駆動トルク、すなわちサーボドライバ21 ,22 ,23 が実際に生成したトルク指令値Tm1 ,Tm2 ,Tm3 から算出されるトルクとの差分ΔT1 ,ΔT2 ,ΔT3 を求める。そして、いずれかの差分ΔTi の絶対値が予め設定された該当する判定値εi より大きければ、衝突が発生したものと見做すようにしている。
【0045】
衝突の検出は、ぶつかったことによるサーボの状態変数の変化があって始めて可能となることは、既に述べた。また、衝突を感知しているのは各モータ単位で検出されるトルクの変動であることも触れた。そのトルクの変動が起こるべくして起こったものか衝突によって起こったものかは、複数の関節があるとき上で述べた四つの外乱トルクの存在を見極めなければ判断することができない。しかしながら、その存在を見極めるためには、厳密な計算が求められることになる。
【0046】
そこで、ロボットが所望の運動をするために必要な各関節に発生させるべきトルクを求め、これを実際にモータが発生しているトルクと突き合わせ、その違いから衝突の有無を検出することにする。演算量が多くなる傾向にはあるが、検出はより一層正確なものとなる。この例では、モータが励磁された後は何時でもサーボドライバからモータの現在位置・速度・加速度を取り込み、それらで各関節が動いているとして各モータに出ているはずのトルク値を計算するというものである。
【0047】
ここで、まず図3を参照して、ロボットシステムの構成について説明する。ロボットは用途に応じて適宜の数の関節を備えるが、図の簡潔化を図るために既に示したとおり、3つの関節からなるロボットを例にする。ロボットの各関節を駆動するモータ11 ,12 ,13 のそれぞれには、回転による前後進量としての位置情報を提供するエンコーダ1e1 ,1e2 ,1e3 が取り付けられている。
【0048】
これらのモータを駆動するための制御装置(ロボットコントローラ)13はロボット本体とは別の制御ボックスに配備され、ティーチペンダント14で指令された教示データを記憶し、その記憶データと予め設定記憶されている当該ロボット固有の機構パラメータ等とをもとにして動作を再生させる演算が行われるようになっている。
【0049】
そして、コントローラ13とモータ1との間には、各モータを位置・速度制御するサーボドライバ21 ,22 ,23 や、位置・速度制御により求められた指令電流値をもとにしてモータに電力を供給するサーボアンプ2a1 ,2a2 ,2a3 も設けられる。ちなみに、サーボドライバ2の構成は従来の技術の項で述べた図14のとおりであり、これが図1の下半部に記載しているかたちで搭載されている。
【0050】
各サーボドライバには、制御装置から与えられる位置指令にモータを追従制御させるため、位置制御ループと速度制御ループとが組み込まれている。位置制御ループは比例要素によるフィードバック制御が、速度制御ループについては比例要素および積分要素によるフィードバックが行われる。なお、位置フィードバック比例ゲインKppは、ロボットコントローラからの要求に応じて、任意の値に変更することができる。
【0051】
速度制御系の後にはトルク制限器3が配置され、速度制御により生成されるトルク指令値Tmi を任意の値で制限しておくことができるようになっている。トルク制限器3に設定される制限値も、コントローラ13からの要求に応じて任意の値に変更可能である。なお、図中のKvpは速度フィードバック比例ゲイン、Kviは速度フィードバック積分ゲイン、Sは微分要素、1/Sは積分要素を表している。
【0052】
コントローラ13は3つの関節に対する制御指令を発するもので、大別すると図3に表したように、中央処理装置CPU,演算プログラムや各種データを記憶して演算する記憶演算部、教示データの取り込みや演算値の出力をするためのインターフェイスといったものからなる。ここで、教示されたデータ(以下作業データという)の再生動作を、以下に簡単に述べる。
【0053】
制御プログラムはROMに格納されており、その中の軌道計画部22が図1に示すようにハードディスク15に格納されている作業データを読み出し、ロボット先端に把持されるツールまたはワークの作業軌道が三次元空間の直交座標上で計画される。
【0054】
次いで、補間点計算部16がその作業軌道を予め規定された時間の補間周期ごとに分割し、補間周期ごとにツール等が到達すべき位置・姿勢を補間点データとして計算する。そして、逆変換部17が補間点データ中の直交座標で表された位置・姿勢を、多関節ロボットで再現するに必要な各関節レベルでの位置に逆変換し、各サーボドライバ21 ,22 ,23 への位置指令値を演算する。
【0055】
このサーボドライバへの位置指令はRAMに一時的に記憶され、ロボットの関節位置をサーボ位置指令値にデータ変換するデータ変換部18から、同期信号SYNC に同期して各サーボドライバへ伝達される。なお、以上の処理は、多関節ロボットをティーチングプレイバック方式で制御するうえで最も基本的な処理であり、公知であることは言うまでもない。
【0056】
ちなみに、図3中のROMには、ロボットの動作制御ならびに衝突検出や停止処理を実行するプログラムと、その実行条件や制御定数などのデータが格納される。RAMはCPUのワーキングエリアとして用いられ、計算途中のデータを一時的に保存する。ハードディスク15には作業データのみならず、ロボット固有のデータ例えばリンクの長さ・質量といったものや、教示された動作において固有のものであるワークやツールに関するデータ等が格納される。
【0057】
シリアルIO(インプット・アウトプット)19はティーチペンダント14と接続され、ティーチペンダントの操作による作業データがシリアル通信によってCPUで認識できるようになっている。サーボIF(インターフェイス)20はサーボドライバ21 ,22 ,23 に接続され、指令データの送信やモータの制御状態のモニタを可能にする。タイマ21は、定期時刻ごとに同期信号SYNC を発生し、この信号によってサーボドライバへの指令値の更新タイミングが与えられる。
【0058】
次に、本発明によるロボットの衝突検出ならびに衝突後の停止処理を行うための最初の形態例を、図1に基づいて説明する。なお、停止処理は後述することにして、衝突検出から述べる。衝突の検出における基本的なところは、比較器291 ,292 ,293 における比較の対象を、位置偏差ではなくトルクとしている点である。
【0059】
ところで、トルクをもとにして衝突の有無を検出しようとする場合、大きいトルクが掛かっていても一概に衝突しているとは言えないことに留意しなければならない。関節が大きな加速度で動くときは大きなトルクが要求されるので、トルクが急激に大きくなったからといって衝突と見做すわけにはいかない。よって、本来所望する運動をさせるために必要なトルクは幾らか、今出ているトルクとはどの程度かけ離れているかを厳密に判定しなければ、高精度な衝突検出はできなくなる。本発明はこのような観点から研究を重ね、完成したものである。
【0060】
まず、サーボドライバはモータの駆動を制御するだけでなく、サーボモータの状態をモニタできるものであるから、本例においてはサーボドライバからモータの位置・速度・加速度といったモータ情報を取り出すことにする。そして、これをコントローラ13の衝突検出部11に入力して、後で詳しく述べるH(θ)・θdd+C(θ・θd )+G(θ)・gなる計算式をもとにした逆動力学演算を行い、衝突していなければ各関節駆動用のモータが発生するはずのトルクT1 ,T2 ,T3 を予測する。
【0061】
逆動力学演算とは、ロボットの各関節の位置・速度・加速度の状態と、ロボットの機構パラメータから、ロボットの各関節に発生するトルクを算出するものである。この逆動力学演算によれば、前記した(1) から(4) のトルク変動要因の影響を正確に予測することができるようになる。
【0062】
一方、予測トルクと比較される対象の「実際に発生しているトルク」は、サーボドライバのトルクループの手前で拾い上げられたトルク値である。衝突がなければ、逆動力学で演算されたトルク値とほとんど同じであり、両トルクの差が大きければ衝突していることを意味することになる。従って、その差分が関節ごとに予め決められた後述する「しきい値」εi に達していれば、「衝突した」と見做すことにするのである。
【0063】
i =H(θ)・θdd+C(θ・θd )+G(θ)・gを計算するにあたり、そのロボット固有のデータすなわち機構パラメータも必要であり、それらがハードディスクから読み出される。トルク値は電流値でもN・m(ニュートン・メータ)でもどちらでもよい。サーボドライバの中にトルク定数(N・m/A)を持ったトルク換算部があればN・mで出力することができ、それを演算値と突き合わせればよい。サーボドライバにトルク換算部がなければ、逆動力学演算において電流値に換算して比較すればよいことは言うまでもない。
【0064】
各サーボドライバとロボットコントローラとの間にはサーボIF20が設置され、以下のデータが伝達される。図1に示されているように、サーボドライバ2からコントローラ13へは、モータの位置応答θm[rad]、モータの速度応答θd m[rad/sec]、モータの加速度応答θddm[rad/sec2 ]およびモータへのトルク指令値Tm[N・m]であり、コントローラからサーボドライバへは、位置指令値θ[rad]、位置フィードバック比例ゲインKppおよび後述するトルク制限値Tmdec [N・m]である。
【0065】
衝突の検出は、サーボドライバのフィードバック制御が行われている限り、図4に示す5つのステップが順次繰り返される。まず、ステップ1(図面では以下S1などと記す)では、衝突検出部11がサーボIF20を介してサーボドライバ2から、ロボットの各関節を駆動するモータの位置・速度・加速度の応答値とトルク指令値を読み込む。この読み込みは、関節を駆動する全てのモータに対して行われる。3つの関節からなるロボットの場合では、モータの位置・速度・加速度の応答値ならびにトルク指令値は、表1の記号を用いて、それぞれ式(1-1) ないし(1-4) で表される行列となる。なお、式中の記号の添え数字は関節番号を表し、[ ]T は表1の「個数」の欄に記載された行列を「転置」して表示したこと示している。
【表1】
【数5】
【0066】
ちなみに、実施例では関節数を3としているが、本発明の趣旨からしてn≧2で適用することができる。n=1の場合も理屈上は不可能でないが、低自由度のロボットは通常速度は速くなくまた他関節からの干渉も受けないので、行列演算の必要性はない。なお、例えば一方にはツールが装着され他方にワークが把持された2基のロボットが連動して再生動作するシステムの場合であっても、本発明の思想は各ロボットごとに適用されるものである。
【0067】
ところで、モータとロボット関節とは、減速機を介して結合されるのが一般的である。そのため、式(1-1) ないし(1-4) の値を、ロボット関節での位置・速度・加速度に換算する必要がある。関節における位置・速度・加速度の応答値ならびに駆動トルクは、表2の記号を用いてそれぞれ式(1-5) ないし(1-8)で表すことができる。
【表2】
【数6】
【0068】
第i関節を例にすれば、それらは式(1-10)ないし(1-13)で表される。位置・速度・加速度については減速比ζi で除した値が関節換算値となり、トルクにおいては減速比を乗じた値が関節換算値となる。そこで、ステップ2においては、モータレベルの位置・速度・加速度がロボットの関節レベルの値に変更される。
【数7】
【0069】
関節レベルの位置・速度・加速度ならびにトルクの応答値が分かれば、ステップ3においては、これらを次に述べる逆動力学モデル(H,C,G)に適用した逆動力学演算によって、発生すると思われるトルクが計算される。逆動力学モデルには、慣性行列のH行列と粘性行列のC行列と重力行列のG行列とが含まれている。なお、各行列の物理的意味は後述する。
【0070】
ロボットの機構パラメータ(関節に連結されるリンクの重心位置・質量・慣性テンソル・長さ等)と、各関節の位置・速度・加速度から、各関節に発生するトルクTは式(2-1) により演算できることが知られている。これを逆動力学モデルという。
【数8】
【0071】
式(2-1) は、広瀬茂男著「ロボット工学−機械システムのベクトル解析−」裳華房、第2版・1989年2月10日発行」(以下技術文献1という)に記載されている。その節11.3の〔4〕には、剛体の運動解析手法の一つであるニュートン・オイラー法を用いて逆動力学演算する手順が詳しく説明されているので、ここでは説明を省く。最終的に逆動力学演算式は技術文献1中の式(11.28) となるが、その式中の最後の項JT K(転置したヤコビ行列にロボットの先端に掛かる外力と外力によるモーメントを表すKを乗じたもの)は、本発明の場合、ロボットが衝突していない状態、すなわち空間を何物にも触れずに変位しているときのトルクを求めようとすることから考慮する必要がなく、従ってその項を省くことによって上記の式(2-1) を得ることができる。
【0072】
関節数nのロボット場合、慣性行列Hはn×nの正則な対称行列であり、ロボットの各関節の加速度によって関節自体に発生するトルクならびに他関節の加速度によって発生する干渉トルクを意味する。粘性行列Cはn×1行列であり、ロボットの各関節の速度により生じる遠心力およびコリオリ力の影響で生じるトルクを示し、重力行列Gはn×3行列で、重力加速度の影響により発生するトルクを示すものである。
【0073】
慣性行列Hについて、少し詳しく触れる。慣性行列H(後述する式(2-9) を参照)の対角要素のHjjは、第j関節の加速度が第j関節自体に及ぼすトルクの関係を示す慣性モーメントを表しており、すなわちHjjは関節位置により変動する負荷イナーシャとなる。その他の成分であるHijは、第j関節の加速度が第i関節に及ぼす干渉トルクの関係を表す慣性モーメントである。
【0074】
慣性行列H,粘性行列Cおよび重力行列Gは、ロボットの機構パラメータと各関節の位置・速度から計算できる。ロボットの機構パラメータは、以下の4つから構成される。なお、表3中の個数は、関節に連結されるリンク1つ当たりである。ちなみに、図2に表したロボットの場合の第3リンクL3 に溶接トーチ等のツールが装着されているならば、その第3リンクのパラメータはツールが一体となった状態で与えられることになる。
【表3】
【0075】
各リンクの質量・重心位置・慣性テンソル・長さ等のロボット機構パラメータは、ロボットの機構やリンク形状および材質から予め求めておくことが可能な既知の値であり、それがロボットの運動中に変化しないことも明らかであるから固定値であって、予めハードディスク15の中に記憶される。それらの機構パラメータを読み出して式(2-1) に適用すれば、各関節の現在の位置・速度・加速度の3つと重力加速度gとから、各関節に発生するトルクを演算することができる。なお、式(2-1) の各要素は、表4に記載の意味を持つ。
【表4】
【0076】
ここで、本例におけるロボットの機構パラメータについて説明を加える。質量mi 、重心位置mxi ,myi ,mzi 、慣性テンソルIxi ないしIzi は、第iの関節の動作により移動しかつ第i+1の関節の動作によっては移動しない第iの関節に連結されるリンクの質量、同じくリンクの重心位置、同じくリンクの慣性テンソルをそれぞれ示す。なお、慣性テンソルの演算手順は、技術文献1の節3.8に詳しく説明されているので(式(3.38)を参照)、ここでは説明を割愛する。
【0077】
上記した重心位置および慣性テンソルを演算するうえでの基準は、リンク座標系に置かれる。関節ごとに割り当てるリンク座標系の定義手順が、吉川恒夫訳「ロボット・マニピュレータ」コロナ社、初版・1989年12月15日発行(以下技術文献2という)の節2.9に詳細に説明されているが、ここでは、基本的なリンク座標系の定義を図5において説明する。例えば、第2関節72 と第3関節73 に跨がるリンクL2 においては、第2関節の回転中心を原点として第2関節に割り当られるリンク座標が定められ、そのx方向をリンクL2 の長さ方向とし、z方向を第2関節の回転方向、y方向を右手座標系の方向と決める。
【0078】
次に、慣性テンソルIは一般に物体の回転しにくさを示すために使用され、よく知られているとおりの3×3の対称行列である式(2-2) で表される。その対角成分はロボット機構部の各関節の慣性モーメントを、その他の成分は慣性乗積の負の値を表すものとなっている。
【数9】
【0079】
また、慣性モーメントは次式で求められ、物体(ロボットリンク)の回りにくさおよび止めにくさを表す。
【数10】
【0080】
次いで、慣性乗積は次式より求められ、物体(ロボットリンク)が回転運動を行っているとき、その運動を乱すモーメントを表す。
【数11】
ここで、dmは微小体積の質量を示す。また、式中のx,y,zは、所定のリンク座標系を基準として表され、図5に示すリンクL2 の慣性テンソルの基準座標は、第2関節に割り当てられたリンク座標系をリンクL2 の重心位置に移したときの座標系とする。他の関節についても同様に定義する。
【0081】
なお、慣性,粘性および重力の行列値の演算方法は技術文献1に詳しく説明されている。ここではその説明は省くが、3つの関節からなるロボットの場合、慣性,粘性および重力の行列は次式のように表される。
【数12】
【0082】
式(2-9) ないし式(2-11)の各構成要素は表3に示されたパラメータならびに関節位置θ,関節速度θd のみから構成され、θ,θd 以外はすべて既知の値である。従って、ステップ2で求められる関節位置応答θr,関節速度応答θd rを次式のごとくθ,θd に置けば、式(2-1) 中の慣性行列H,粘性行列Cおよび重力行列Gを求めることができる。
【数13】
【0083】
ステップ3でH,C,Gの各行列が算出されたことで、式(2-1) 中の未知の値は関節加速度θddならびに重力加速度が働く方向を示す重力加速度ベクトルgの二つとなる。後者はロボットの設置姿勢によって変わるものであるが、一般的にはロボットの設置姿勢が変わらないと考えて差し支えなく、従って予め規定しておくことができる。
【0084】
ステップ4において、最終的に式(2-1) で表される逆動力学モデルを計算するうえで必要な値のうち未知なものは、関節加速度θddだけとなる。これもステップ2で求められた関節加速度応答θddrを式(4-1) のかたちで代入すれば、衝突のない場合にロボットの各関節がθr,θd r,θddrで運動するために必要となる各関節での発生トルクTを、式(4-2) で予測することができる。
【数14】
【0085】
ステップ4で算出した衝突が起こっていない場合にロボットの各関節がθr,θd r,θddrで運動するために必要な各関節のトルクTと、ステップ2で算出した実際にモータが関節を駆動しようとしているトルク指令値Tcとの差分ΔTをステップ5において計算する。
【数15】
【0086】
衝突がなければ、トルク指令値Tcと予測値Tとはほとんど等しく、ΔT≒0となるはずである。一方、ΔTの絶対値が予め設定された判定値εi よりも大きくなる場合には衝突が発生したものと見做して、制御プログラムを停止処理へと移行させる。具体的には、式(5-3) ないし式(5-5) の条件式のいずれか一つでも満足する状態が生じれば、衝突が発生したと判定される。
【数16】
【表5】
【0087】
ちなみに、εi は例えば0.1Tci もあれば十分であることが多い。現実には0.3Tci なければならない場合もあるが、そのときでも3割増し以上のトルクが掛かれば衝突と判定することになるわけで、従来技術の項で述べた位置偏差による場合、トルクに換算すれば例えば0.8Tci もしくはそれ以上にも及ぶのに比べると、本発明の場合衝突検出精度が格段に向上することが分かる。このような向上は、関節によってはさらなる改善も期待できる。
【0088】
なお、判定値εi は固定しておくといった単純な扱いをしてもよいが、加速度の大きさや速度の大きさに応じて可変とし、加速度や速度が大きければ感度を下げ、小さければ上げるといったように感度変更可能としておくこともできる。加減速時に感度を上げて0.1Tcといったようにしておくと衝突の誤検出を招きやすく、加減速が少なくかつ低速のときに0.3Tcといったように感度を下げておくと衝突の検出が遅れることになるからである。
【0089】
以上の説明から分かるように、ロボットの衝突の検出のためには、全ての関節を駆動する各モータの情報を統括して処理し、それらを統合して逆動力学演算することにより全ての干渉(衝突)を見い出すことができるようにしている。その演算において、式(2-1) が不可欠であることは言うまでもない。ロボットの機構パラメータのうちリンク質量・リンク重心位置・リンク長さも欠くことのできない要素である。しかし、リンク慣性テンソルは細長いリンクを採用するロボットでは必要となるが、軽量ロボットまたは短リンクロボットなどの場合に考慮するに及ばないことがあるので、その都度適宜選択することにすればよい。
【0090】
サーボドライバ21 ,22 ,23 に入力される「位置指令」はハードディスク15に記憶されたデータに基づき軌道計画部22で演算された結果として出された命令である(図1を参照)が、教示中にあってはティーチペンダント14(図3を参照)によって入力されたデータに基づく「位置指令」ということになる。それゆえ、教示中の不意の衝突に対しても、本発明の動作を行わせることができる。
【0091】
本発明に係る衝突検出法によれば、衝突検出が精度高く迅速になされるので、後述する停止処理操作とあいまって、少なくともロボットが壊れたり周辺に存在する治具等の機械的構成要素を損傷させたり、復旧に多大の時間を要することは可及的に少なくなり、衝突後の稼働や教示を速やかに再開することができるようになる。衝突検出はコントローラに搭載した衝突検出ソフトによるので、ショックセンサや機械式衝突検出装置をロボットリンクに装備する必要はなく、ロボットリンクの構造や機構の複雑化は回避され、また軽量化も図られる。
【0092】
ところで、図1においては、サーボドライバからコントローラに、モータの位置応答,モータの速度応答,モータの加速度応答およびモータへのトルク指令値が伝達されると説明した。しかし、速度応答と加速度応答とはそれぞれの前者を微分すれば得られるものであるので、サーボドライバからコントローラへは、図6のようにモータの位置応答と速度応答にとどめ、衝突検出部11において速度応答値を微分してモータの加速度応答を得るようにしてもよい。さらには、モータの位置応答のみをコントローラへ供給し、図示しないが、コントローラで一階および二階微分して速度および加速度を求めるようにすることも可能となる。いずれの場合も、サーボIF20を介した情報伝達の混雑を緩和させることが期待できる。
【0093】
上記した例では、差分ΔTを求めるにあたり、逆動力学演算に基づくトルク予測値と、サーボドライバが速度制御により生成したトルク指令値Tmを実際の関節駆動トルクと扱い、そのトルク指令値を採用すると説明した。しかし、そのトルク指令値に代えて、各モータにおけるトルク応答値から算出されるトルクを採用してもよい。
【0094】
図7から分かるように、サーボドライバ21 ,22 ,23 で求められたトルク指令値Tmi に応じた電力を動力線から各ブラシ付きDCモータ11 ,12 ,13 に供給するサーボAMP2a1 ,2a2 ,2a3 からの回路に電流検出器231 ,232 ,233 を設ける。そして、電流検出器で拾った電流をA/D変換した後にそのトルク値Tni にトルク定数を乗じて、N・mとして得たトルク応答値(実際に出力されているトルク)Tci ’を使用する。この場合、前記した式(1-13)の代わりに次式が採用されることになる。
【数17】
【0095】
モータがブラシレスDCモータである場合には、実際に流れている全ての電流が有効なトルクになるわけではない。特にモータの高速回転時には、トルクに変換されない無効電流が増加し、指令と出力の誤差が大きくなる。実際にモータが出力しているトルクは、モータの三つ相のうち二つの相に流れている電流(以下相電流という)を検出して、図8に示す座標変換部24で座標変換を行うことにより、トルクに変換される電流である有効電流iqaを求めることができる。
【0096】
座標変換処理は無効電流を捨て有効分だけ取り出すというものであり、これについては、杉本英彦他著「ACサーボシステムの理論と設計の実際」総合電子出版社、第2版・1990年5月8日発行(以下技術文献3という)の節4.2で詳細に説明されている。最終的には当文献中の式(4.11)で表される。式中のiqaの項が有効電流に相当するもので、相電流iua,ivaとモータの電気角θreより有効電流iqaが式(6-1) で算出される。
【数18】
【0097】
なお、電気角θreの検出には多くの方法があるが、絶対値エンコーダを使用する場合は次のようにして求めることができる。まず、電気角360°に相当するエンコーダのパルス変位θe rev を算出する。θe rev は、エンコーダ1回転当たりのパルス変位θmrev をモータの極対数Pn で除した値であり、式(6-2) で算出される。極対数とはブラシレスDCモータのu,v,wの三つの極対がモータ1回転当たりに配置されている数であって、一つの極対に相当するモータの回転量が電気角360°となる。エンコーダ1回転当たりのパルス変位θmrev 、モータの極対数Pn についても、それぞれエンコーダとモータの仕様から予め規定しておくことができる値である。
【数19】
【0098】
エンコーダからの出力パルスθeを電気角360°に相当するエンコーダのパルス変位θerev で除し、そのときの余りをθerev で除したものに2πを乗じることによって、電気角θreが求められる。具体的には、式(6-3) となる。式中の演算子MODは、除算の余りを算出することを表している。
【数20】
【0099】
以上の式(6-1) ないし式(6-3) より算出された有効電流iqaにトルク定数Kt を掛けることにより、モータが実際に出力しているトルクTnが算出される。トルク定数Kt は有効トルクに対する発生トルクTnの比で、モータの仕様から予め規定しておくことができる値である。
【数21】
【0100】
上に現れた記号を参考までに、表6に掲記しておく。なお、上記した図8は出力トルクの検出機能を持つサーボドライバのブロック線図であり、電流検出器23u ,23v で検出された相電流iua,ivaが、AD変換器を介して読みとられている。電気角の算出のため必要となるエンコーダの出力パルスも、読みとり可能となっている。
【表6】
【0101】
なお、モータがブラシ付きDCモータの場合には、図8中の座標変換は必要なく、直ちにトルク定数を乗じればよい。このようにモータの出力トルクを検出して、これを衝突検出に供するようにすれば、より一層検出精度が向上する。とりわけ、高速回転時にトルクに変換されない無効電流が増加するためにトルク指令値とモータ出力トルクとの間にずれの生じやすいブラシレスDCモータ等においては、極めて有効な手段となる。
【0102】
図1では、サーボドライバから拾い上げた位置・速度・加速度応答値を用いて逆動力学演算するようにしているが、拾い上げてから演算に入る関係上、後述する停止処理に入るまでに若干の遅れが出る。図9はそれを改善しようとするもので、衝突が発生していない場合に各関節を駆動するモータが発生すべきトルクを予測するときに使用されるモータの位置・速度・加速度として、作業データの再生動作のために演算した関節位置とその関節位置をもとにして計算した速度および加速度を採用するものである。
【0103】
モータがいかなる位置・速度・加速度で動いているかは軌道計画の段階で分かるはずであり、これを使用すればサーボの状態を見なくても予測トルクを計算しておくことができるとの知見に基づくものである。従って、軌道計画を解析した結果得られる位置・速度・加速度から各モータで発生すると思われるトルクを逆動力学演算によって求め、それを実際にモータに流れているトルクと突き合わせて衝突の有無を検出しようとするのである。
【0104】
そのために、図9のコントローラ13内の制御プログラムには、図1に示した軌道計画部22,補間点計算部16,逆変換部17に加えて、補間周期ごとのロボットの関節位置からロボット関節の速度・加速度を計算する速度・加速度計算部25が付加されている。
【0105】
なお、データ変換部18からサーボドライバ2への位置指令信号の出力と逆動力学演算のためのデータ信号26の出力との間に時間的調整をとっておく必要があるが、その場合、後者を前者より例えばサーボドライバでの演算時間だけ遅らせるといった配慮をすればよい。この図9のような構成にすれば、サーボドライバ2とコントローラ13との間のデータのやり取り量も少なくなり、通信の負担が軽減されることにもなる。ちなみに、ティーチペンダントによる教示中や手動運転中でも、軌道計画部22で作業軌道を生成して関節の位置・速度・加速度を予測することが可能であるので、この方法は先の例(図1を参照)と同様に、動作再生時以外でも適用することができる。
【0106】
衝突の検出は、ロボットの作業軌道の補間点データに対してサーボドライバ2のフィードバック制御が行われている限り、図10に示す6つのステップを順次繰り返して行うことにより実現される。なお、衝突検出は、コントローラ13内のプログラムである衝突検出部11で行われることは、図1の例と異なるところがない。
【0107】
まず、ステップ11においては、ロボット各関節の位置・速度・加速度が、ハードディスク15に記憶される作業データの再生動作行う過程で計算される。具体的には、速度・加速度計算部25で補間周期ごとのロボットの各関節位置θからロボット各関節の速度θd ,加速度θddが計算される。
【0108】
ここで、ロボット各関節の速度・加速度を計算する方法について説明する。補間周期Smpt ごとのロボット各関節の位置θが算出されると、現周期で算出された関節位置をθcurrとし、直前の補間における関節位置をθprevとして、現補間点おける各関節の速度θd が以下のようにして算出される。
【数22】
【0109】
現周期で算出された関節速度をθd currとし、直前の補間時の関節速度をθd prevとすれば、現補間点おける各関節の加速度θddが同様の要領で求められる。なお、時刻0における、各関節の速度,加速度はいずれも0と置かれる。
【数23】
【0110】
ステップ11で算出したロボット各関節の位置θから、サーボドライバへの位置指令θc を式(8-1) により算出し、サーボIF20を介してサーボドライバ2へ出力する。モータは減速機を介して関節を駆動するので、ロボット各関節の位置θに減速比を乗じた値がサーボドライバへの指令値となる。このようにして、サーボドライバへの位置指令値の送信がステップ12で行われる。なお、θc はロボット関節の位置応答 [rad] であり、その個数はn(=3)×1行列となる。
【数24】
【0111】
ステップ13ではトルクの状態の読み込みがなされる。すなわち、衝突検出部11がサーボIFを介してサーボドライバ2から、ロボットの各関節を駆動するモータのトルク指令値Tm1 ,Tm2 ,Tm3 を読み込む。また、モータからロボット関節への結合は減速機を介して行われるので、サーボドライバ内のトルク指令値Tmi に減速比を乗じた値が関節を駆動するトルクTc i として与えられる。
【数25】
【0112】
以後、ステップ14では逆動力学モデル(H,C,G)が計算され、ステップ15で逆動力学演算によるトルク予測値が演算される。ステップ16で前述したとおりの手順によって衝突判定処理がなされる。もちろん、その後には後述する停止処理も行われる。
【0113】
図9の例においては位置・速度・加速度指令をもとにしてトルクを予測しており、実際の応答値と指令値の誤差が小さければトルク予測の精度が上がることは明らかである。従って、衝突検出精度も向上することになる。そこで、図9の構成に、サーボドライバ2内のサーボ制御系に対して速度指令をフィードフォワード補償すれば、サーボドライバの指令追従性能を上げることができ、常にロボットの衝突検出精度を高く維持しておくことができるようになる。図11は、図9の構成に速度指令のフィードフォワード補償を付加した形態を示している。
【0114】
もう少し詳しく述べると、図9の場合、軌道計画の後に関節速度も演算されているので、図11のように速度をデータ変換部27からフィードフォワードすることができる。フィードフォワードすれば、位置・速度・加速度の関係が実際の応答と異なる程度を図9の場合よりも小さくすることができる。すなわち、図9の場合、位置・速度・加速度と実際に使用される位置・速度・加速度とが乖離する傾向にあり、従って衝突していないにもかかわらず逆動力学演算結果とトルク指令値とが一致しなくなるといった演算精度上の問題が生じる。しかし、フィードフォワード補償によれば、これを効果的に解決することができる。
【0115】
図12には、速度指令のフィードフォワード補償の有無によって速度応答がどうのように相違するかが示されている。速度指令のフィードフォワード補償を行えば、(a)と(b)を見比べて分かるように、破線で示す速度指令に対して実線で示すごとく追従性能(速度応答)が向上する。これから分かるように、フィードフォワードすればタイムラグが小さくなり、結果として、位置・速度・加速度の関係も実際に極めて近いものとなる。
【0116】
なお、フィードフォワード補償すると位置フィードバック比例ゲインKppの効きは落ちるが、速度はフィードフォワード的に効くので速度指令が迅速になされる。ただ速度だけでは十分な位置精度が出ないので位置をもとにした速度制御も残されており、これを速度のフィードフォワードに対して補間的に機能させておくことになる。
【0117】
ちなみに、式(2-1) はJT Kを省いたものであると説明したのは、常に外部の何物にも触れずに作業しまた空間を変位する例えばアーク溶接ロボットに適用する場合を念頭に置いたからである。そこで、本発明をワークに対して接触しながら作業する類のロボットに適用する場合は、ツールを現在位置から次の目標位置まで単に空間移動させるといったときのみ有効となる。しかし、式(2-1) にJT Kを付加しておくならば、逆動力学演算に多少の処理時間増加を伴うことになるが、力覚センサ等を働かせながらワークに対して接触する作業をしているときも本発明の思想を反映させることができるようになる。
【0118】
以上までは衝突の検出方法を述べたが、これからは衝突の検出があった後の停止処理について説明する。その処理の趣旨は、以下のとおりである。衝突が発生したときは、いち早くそれを検出すべきであることは言うまでもない。しかし、衝突を検出できた時点では衝突してから既に少し時間が経過しているわけであるから、衝突直前にロボットを停止させるということは至難の技である。
【0119】
そこで、ロボットの停止操作においては、衝突してもロボット本体やぶつかった対象物や障害物の損傷が最小限に抑えられるようにすることを最終的な目標とすべきである。簡単に言えば、各モータには、その関節を介して動かされているリンクが今持っている慣性モーメントを吸収して停止させることができる程度のトルクしか発生できないようにしておき、これによって衝突逃げ動作を可能にして被害を最小限にくい止めるとの観点に立った停止処理を行うことにする。
【0120】
この停止処理は図2のところでも触れたように、停止もしくは低速で動いている関節については、矢印9のような衝突による干渉力を和らげる方向への回転を許容できる制御をすることであり、従来技術の項で述べたように、どの関節においても可能なかぎり大きいトルクを発生させて迅速に制動しようとする場合、ロボットと障害物との間に大きな力が作用することになるというのを回避しようとするものである。
【0121】
具体的には、衝突検出できた以降は、各モータ速度を0とするために必要な最小限のトルクを越えるトルクを発生させないように、モータの発生トルクを制限することにする。例えば第3関節は止まっておりしかも重力も作用していないとするとトルクはほとんど0でよいから、ぶつかればその関節は簡単に回転し、リンクは障害物からスルッと逃げる。負荷を伴うことなく逃げることができれば、第2関節や第3関節には停止するための惰走の余地も残され、ロボット全体の干渉力や衝撃力を和らげ被害の発生が最小限に抑えられる。このように、本発明においては、大きな慣性力を持っていないかまたは高い速度が発生していない関節については、力に逆らわずに逃げる仕組みを提案しようとするものである。
【0122】
その停止処理の主旨は、関節のうち停止もしくは低速で動作している関節あるいは慣性力が小さいため動作停止に必要なトルクが最大トルクと比較して十分小さい関節については、衝突があった後に障害物に対して逃げ動作をさせ、衝突による干渉力が和らげられるようにしたことである。
【0123】
また、衝突発生時の各関節の速度と負荷イナーシャからロボットの動作を停止させるために必要な最小限のトルク値を関節ごとに算出し、その最小限のトルク値をサーボドライバ内のトルク制限器3に設定すると共に、全てのサーボドライバ内の位置フィードバック比例ゲインKppを0に置き替えるようにする。それによって、強制的に速度指令値を0とした速度フィードバック制御による減速処理を行わせるのである。
【0124】
さらに、ロボットの動作を停止させるために必要な各関節のトルク値の算出においては、全ての関節が同じ時間で停止すると仮定し、関節ごとに減速停止時間を算出した後、全ての減速停止時間のうちの最大値をいずれの関節の減速停止時間にも充てることにより、上記した逃げ動作を幾つかの関節において実現できるようにするものである。
【0125】
衝突が検出されても速度はステップ状に0となることがないので、衝突発生時の関節速度θd rはサーボドライバの状態変数であるモータ速度θd mから知ることができる。関節位置についても、サーボドライバの状態変数であるモータ位置θmから知ることができる。衝突発生時の関節位置が分かれば、負荷イナーシャであるH行列の計算は可能となる。これは当然ロボットの姿勢によって変化するイナーシャである。この衝突発生時のイナーシャと速度から以後速度を0にするに必要なトルクを計算し、この値以上のトルクが発生しないようにモータ出力トルクを制限する。このトルク出力制限処理は、図1,図9,図11に表されたトルク制限値の伝達経路28を介して行われる。
【0126】
図2のように第3関節73 は動いていないが第1関節71 と第2関節72 が動いているとすると、第1関節と第2関節についてはその慣性力を制御するだけの比較的大きなトルクが必要となるが、第3関節では慣性力は小さく従って減速に必要なトルクも第1関節や第2関節に比較すれば小さくてよい。そのため、第3関節73 を駆動するモータのトルク制限器には小さい値が設定され、第3関節に連結されたリンクが第1関節,第2関節の動きによって衝突しても、第3関節は簡単に衝突による干渉力を和らげる方向へ逃げることが可能となり、衝突による変化を吸収することができる。
【0127】
以下に、停止処理の具体例を述べる。前述したいずれかの衝突検出処理により衝突を検出した後、図13の4つのステップからなる処理を行う。まず、ステップ21において、ロボットの動作停止に使用可能なトルク値を算出する。
【0128】
衝突発生時の停止処理に使用可能な各関節のトルク値Tusabが、式(4-2) を変形した式(10-1)から算出することができる。このトルク値Tusabは、動作を停止させるための減速運動に使用できるもので、加速度によって生じるトルクと見做される。重力によるトルクや粘性によるトルクは速度に依存するものであり、加速度によるトルクとは別に確保されねばならないトルクである。
【0129】
式(4-2) を変形して速度により消失するトルク(粘性トルク)と重力により消失するトルクとを引き去れば、それが減速に供し得るトルクとなる。すなわち、遠心力や重力加速度に影響する外乱トルクによって、実際に停止のための減速運動に使用できるトルクが制限される。
【数26】
【0130】
なお、式(10-1)中のsign(θd r)は符号を決めている。Tmax は各モータが発生し得る最大トルクであって、正の値に設定される。しかし、場合によってはマイナス値として使用したいときもあるので、sign(θd r)はそれを判定している。現在の速度が正であれば負の加速度が必要となり、負のトルクが与えられる。正の速度が出ているとTmax は正となるが、負の符号がついているので負のトルクとなる。負の速度が出ていれば正の加速度が必要となるので、負×負=正となるようにしている。すなわち、速度(θd r)に対して符号を反転させることを意味している。
【0131】
−sign(θd r)・Tmax は、各関節が出力できるトルクの最大の減速トルクである。現在の速度を0にするために必要な減速トルクは、そのトルクから速度によって消失するトルクと重力によって消失するトルクを引算したもので、それが実際に減速のために使うことができる式(10-1)で与えられるトルクTusabである。
【0132】
式(10-1)は、式(4-2) のH(θr)・θddrをTusabと、式(4-2) のTを−sign(θd r)・Tmax と置き換えたものである。なお、第i関節の最大出力トルク値Tmax i は、関節を駆動するモータが出力可能な最大トルクをTm maxとすると、減速比を考慮して式(10-4)で算出することができる。言うまでもなく、Tm maxはモータの仕様から予め規定できる値であり、粘性行列Cならびに重力行列Gは、衝突発生時の各関節の位置と速度から算出可能である。
【数27】
【0133】
Tm maxi も減速比ζi も既知の値であるからTmax i も予め固定的に与えるておくことができる。C行列やG行列も衝突を検出する過程で計算されており、新たに計算する必要はない。現時点のものでよいから、式(4-2) で使ったものをそのまま持ってくればよい。本当は時間のずれが極く僅か存在するが、衝突した時から再度計算するには及ばないからである。もちろん、計算してもよいが時間を要するうえに計算値に大した違いは生じない。なお、上に現れた記号を参考までに、表7に掲記しておく。
【表7】
【0134】
ステップ22では、動作を停止させるために必要な各関節のトルク値が算出される。減速により発生するトルクは、慣性行列Hと各関節の減速度の積であり、式(11-1)で表される。なお、θddは未知であるが、分かっていればこの式によってTdec が求まることになる。
【数28】
【0135】
ところで、この停止処理の制御においては、全ての関節が時間tmdで速度0に減速停止するものと仮定する。すると、各関節の減速度θddは、式(11-2)で表現することができる。なお、式(11-2)中のθd rは、衝突発生時の各関節速度である。ただ、いまの段階ではtmdは未知である。
【数29】
【0136】
全ての関節が式(11-2)の時間tmdで減速停止することを制御条件としているのは、何らかの条件を課さなければ制御の実行が図られないためであるが、この条件によって、幾つかの関節において上記した逃げ動作を可能ならしめることができるようになるのである。
【0137】
そこで、時間tmdとして、後で説明する式(11-4)ないし式(11-6)でロボットの関節の数だけ求まる複数のtmdの中から、最長のものを使用することにする(式(11-7)を参照)。これは、ロボットの全ての関節において衝突後のロボットの減速運動により発生するトルクが、減速に使用可能なトルクTusabを越えないようにしておくためであり、それを実現するtmdによって、全ての関節を同じ時間で停止させることができるようになる。
【0138】
なお、参考までに記せば、選定されたtmdの関節は、結果的に最も速く動いている関節あるいは一番大きいモーメントを受ける関節であることが多い。ちなみに、このようにして選定された時間によれば、最も遅く動いている関節では速度が0になるまでに時間が十分にあり無用な惰走が強られることになるが、元来速度は低いので多少惰走してもその距離がさして大きくなることはない。
【0139】
ここで、停止処理の減速に使用できるトルクは、式(10-1)からTusabと算出されているので、式(11-1)の右辺をTusabに置き換え、全ての関節が式(11-2)の時間tmdで減速停止するものとする。式(11-1)中のθddに式(11-2)の右辺を代入すると、式(11-1)は式(11-3)のように変形される。式(11-3)中の慣性行列Hの算出方法は、既に説明したとおりである。
【数30】
【0140】
この式(11-3)から、停止処理の減速に使用できるトルクTusabの範囲内で、ロボットの各関節の速度を0にできる減速停止時間tmdが算出できる。なぜなら、式(11-3)において、H(θr)は、衝突発生時の各関節位置θrから算出できかつθrはサーボIF20を介してモニタ可能であるからである。また、θd rは衝突発生時の各関節速度でありサーボIFを介してモニタ可能であり、Tusabは式(10-1)で計算済みでもある。
【0141】
最終的には未知の値はtmdだけとなる。tmdは行列式であり、3つの関節からなるロボットの場合には、3つの関係式ができる。実際には、式(11-3)を、関節ごとに以下の3つの式に分解し、減速停止時間tmdを算出する。具体的に言えば本実施例では関節数n=3であるから、関節ごとに減速停止時間tmd1 ないしtmd3 を算出した後に、tmd1 ,tmd2 ,tmd3 の中の最大値を全ての関節の減速停止時間に充てる。式(11-7)中のMAXは要素中の最大値を抽出することを意味している。
【数31】
【0142】
動作を停止させるために必要な各関節のトルク値Tdec i は、式(11-4)ないし式(11-7)から算出される減速停止時間tmdを用いて、式(11-8)で算出される。なお、Tdec i は停止に必要な関節のトルク値 [N・m] で、その個数はn(=3)×1行列である。tmdは全ての関節での減速停止時間 [sec] で、個数は1である。
【数32】
【0143】
このようにして算出されたTdec は、衝突発生時のロボットの各関節の位置・速度により変化する負荷イナーシャや外乱トルクの変動を考慮したもので、停止時間に遅延を生じさせない必要最小限のトルク値となる。
【0144】
式(11-1)のH行列,式(11-2)の現在の関節速度θd rおよび減速停止時間tmdから、各関節に必要な減速トルクTdec が式(11-8)により分かる。どこか一つの関節すなわち減速動作に最大時間を要すると思われる関節についてはTusabに等しくなるが、他の関節ではTdec <Tusabとなる。これは速度が小さいか慣性力(=H)が小さいものについてはTdec も小さくなるからで、これがトルク制限値として設定されると、干渉力に対して逃げ動作を可能にする。
【0145】
ステップ23では、サーボドライバ2内のトルク制限器3の設定値が変更される。すなわち、ステップ2で算出したTdec は関節で発生するトルクであり、実際にモータで発生するトルクの制限処理を行うのはサーボドライバで行われる。通常、モータは減速機を介して関節を駆動しているので、Tdec をモータシャフトの換算値Tm decに変更し、サーボIF20を介した伝達経路28を通じてTm decが各サーボドライバのトルク制限器3に設定される。
【0146】
第i関節を駆動するモータにおける停止時間に遅延を生じさせない必要最小限のトルク値Tm deciは式(12-1)のようにして算出することができる。なお、Tm decは停止に必要なモータのトルク値 [N・m] であり、その個数はn(=3)×1行列となる。
【数33】
【0147】
ちなみに、トルク制限値として式(11-8)のTdec がサーボドライバに入ってくるが、Tdec はそのまま入れられない。動力学演算というのは一般的に関節レベルで得られるので、求まったTdec も関節レベルのトルクであって、実際にトルクを制限するのはモータである。モータと関節との間には減速機が介在されているから減速比で割った値を設定しなければならない。従って実際はTm deci が入れられることになる。
【0148】
念のために記載するが、H行列やθd rが関節ごとに違うから、tmd1 =tmd2 =tmd3 としているとはいえ、Tm deci はサーボドライバ21 ,22 ,23 ごとに異なる。なお、得られたTmdec i をそのまま使用してもよいが、Tmdec i に対して関節ごとにウエイトづけすれば都合のよい場合がある。そのような場合には、異なった係数を各Tmdec i に乗じて採用すればよい。
【0149】
ステップ24では、各サーボドライバ2内の位置フィードバック比例ゲインKppが、サーボIF20を介して0に変更される。以上のステップ21ないし24の処理により、強制的に速度指令値を0とした速度フィードバック制御による減速処理が行われる。
【0150】
各サーボドライバ内のトルク制限器3には、停止に必要な最小限のトルク値が設定されるので、衝突による干渉力がこれを上回る場合、関節が干渉する力(衝突力)を逃がす方向に動作し衝撃が軽減される。トルク制限器に最大トルク値が設定される従来の場合に比べれば、干渉力緩和効果が飛躍的に改善されることになる。
【0151】
このように、トルク制限値を置き替えるだけでなくKppを0にしているのは、トルク制限値の置き替えだけでは関節が止まらないからである。位置指令や位置のフィードバックに如何なる値が来ていようとも、Kppを0にすれば速度指令は直ちに0となる。速度指令を単純に0とするには、Kppを0にすることが手っとり早いからである。
【0152】
上記から分かるように、速度ループだけで関節の動きを止めにいこうとするのであるが、トルクが適当に変更して制限されているので、速く動いている関節では最大トルクで止める制御がなされる。一方、他の関節では、自己の速度を0に保持するだけのすなわち現在の姿勢を維持するだけのトルクしか発生しないようにしておくことができる。
【0153】
これから分かるように、上記の停止処理によれば、トルク制限値を越える干渉力や衝撃が作用した場合に、その力の優劣を利用して関節に力逃しの挙動をさせることができ、ぶつかったことによる損傷の発生が可及的に抑えられる。なお、停止した状態でも、障害物にぶつかった関節であれぶつかっていない関節であれ速度ループにおける積分項はいつまでも機能するので、各リンクは関節が発揮している制限値内のトルクによって姿勢を維持し続ける。
【0154】
ちなみに、例えば水平面内のみで変位するリンクであって、姿勢保持に重力に対抗する力を必要としないロボットの場合やトルクが掛かり放しでは不味い境遇にあるリンクなどでは、速度が0になった時点でトルクを解放すればよい。その場合にはKviの入っている積分項の働きをなくせばよく、Kppを0にするときもしくはその後に積分項をクリアする操作を付加しておけばよい。
【0155】
以上で、衝突検出後の停止処理の説明を終えて、以下に、衝突検出精度の向上策について述べる。既に述べたように、トルク指令値に代えてトルク応答値を採用することもその一つであるが、ここではモータロータの慣性モーメントを考慮したり、モータ軸受や減速機の摩擦抵抗を考慮することによる衝突検出精度の向上について触れる。いずれも単独もしくは重複して機能させることができるものである。
【0156】
まず、モータロータの慣性モーメントの考慮による衝突検出精度の向上から説明する。これは、前記したn×nの慣性行列における対角要素としての「関節の持つ加速度が該関節自体に及ぼすトルクの関係を示した慣性モーメント」、すなわち「関節位置により変動する負荷イナーシャ」に、減速機を含むモータロータの慣性モーメントを減速比の2乗倍して加算しようとするものである。これによって、各関節内における減速機を含むモータロータの慣性モーメントにより発生するトルクも考慮して、衝突検出精度を向上させることができる。
【0157】
まず、式(2-9) の慣性行列Hを以下のように変形することにより、各関節内における減速機を含むモータロータの慣性モーメントにより発生するトルクを考慮に入れる。ここで、Imはモータロータの慣性モーメント [kg・m2]で、その個数はn(=3)×1行列となる。
【数34】
【0158】
図1や図9さらには図11の例に共通して言えることであるが、慣性行列Hは各関節に連結されたリンクのイナーシャだけを計算しているに過ぎない。関節はモータで駆動されるから動くのであるが、関節を駆動する以前にモータも駆動されており、そのときのロータ自体の回転の慣性にも注目すべきである。
【0159】
ここで、Imi は減速機を含むモータロータの慣性モーメントである。連動して動く回転体の慣性モーメントは、その減速比の2乗分の1倍されて入力軸の慣性モーメントに影響を与える。従って、入力軸の慣性モーメントが出力軸に与える影響はその逆であるため、減速比の2乗倍されなければならない。減速機を含むモータロータの慣性モーメントが減速比の2乗倍されて加算されているのはそのためである。
【0160】
慣性行列Hの対角要素はそれ自体に与えるトルクの影響を示し、他の要素は他の関節に与える干渉トルクの影響を示す。減速機を含むモータロータの慣性モーメントが他の関節と干渉することはないので、対角要素のみを修正すればよい。なお、Imi もξi も予め設定可能な既知であるから、式(13-1)による場合も、既に述べた例と同様に衝突検出ならびに停止処理は可能である。
【0161】
次に、摩擦抵抗を考慮して衝突検出の精度を上げることについて説明する。式(2-1) で表されるロボットダイナミクスモデルを、式(14-1)のように変更することにより、各関節内のモータの軸受や減速機の摩擦抵抗を考慮できるようにしようとするものである。なお、ここで現れる記号を参考までに、表8に掲記しておく。
【数35】
【表8】
【0162】
減速機自体にも摩擦がかなりあり、これも無視し得ない。速度項のことを粘性行列というが、それがCm・θd である。しかし、これは物が擦れるときの摩擦を対象とするものではない。或る速度で動いているものが或る速度で動いているものに重なると、その速度と速度が干渉しあって別方向にトルクが生じるが、そのトルクを意味する。これは、式(14-1)の4項目に表されている。
【0163】
Cmは動粘性係数であり、これに速度を乗じれば、外乱トルクとなる。|Fcou |はクーロン摩擦(静摩擦:動き始めるまでの抵抗)と言われるもので、速度に依存することなく一定の大きさを持つが、常に運動と逆の方向に働くトルク成分である。Cm・θd mと|Fcou |との和が、ここで考慮すべき摩擦トルクである。式(14-1)は式(2-1) に4項目を追加したものであり、摩擦を考慮した演算で精度を上げようとするものである。
【0164】
ここで、Cmはモータの軸受けや減速機の動粘性係数n×1行列であり、動粘性係数とは、速度と動摩擦トルクとの比例関係を表す定数である。また、動摩擦トルクとは、速度に比例した大きさを持つトルク成分である。さらに、θd mはモータの速度n×1行列である。なお、式(14-1)中のsgn ( θd m)は、モータの速度に基づいて、次式のように決定される符号関数である。
【数36】
【0165】
また、関節速度とモータ速度の関係はその減速比ξから、式(14-5)のように表される。
【数37】
ここで、ξは関節内の減速機の減速比である。パラメータCm,Fcou ,ξも予め設定可能な既知の値であるから、上記(14-1)によっても衝突検出ならびに停止処理できることは述べるまでもない。
【0166】
【発明の効果】
本発明によれば、サーボドライバが検出したモータの位置・速度・加速度から衝突が発生していない場合に各モータが発生すべきトルクを予測し、そのトルク予測値と実際の関節駆動トルクとの差分を求め、その絶対値が予め設定された判定値より大きい場合に衝突が発生したものと見做すようにしたので、ロボットのいずれかのリンクやツールがワーク等の対象物やその他の障害物に衝突したことをトルクを通じていち早くかつ正確に検出することができるようになる。
【0167】
衝突が生じていない場合に各関節を駆動するモータが発生すべきトルクを、ロボットの各関節の位置θ、速度θd 、加速度θddとロボットの機構パラメータとをもとにして、T=H(θ)・θdd+C(θ,θd )+G(θ)・gの逆動力学演算によって予測するようにしているので、そのトルク予測値を高精度に求めておくことができ、衝突センサ等の機械的構成物を搭載しなくても、迅速かつ正確に衝突を検知できる。
【0168】
関節のうち停止もしくは低速で動作している関節あるいは慣性力が小さいため動作停止に必要なトルクが最大トルクと比較して十分小さい関節には、衝突があった後に逃げ動作させるようにしておくので、衝突による干渉力を軽減して物損の発生を抑制することができる。
【0169】
衝突発生時の各関節の速度と負荷イナーシャからロボットの動作を停止させるために必要な最小限のトルク値を関節ごとに算出し、その最小限のトルク値をサーボドライバ内のトルク制限器に設定すると共に全てのサーボドライバ内の位置フィードバック比例ゲインKppを0とし、強制的に速度指令値を0とした速度フィードバック制御による減速処理を行わせるようにすれば、位置指令や位置のフィードバックに如何なる値が来ようとも、速度指令を単純に0にしておくことができ、加えて、衝突による干渉力がトルク制限値を上回る場合、関節が干渉力を逃がす方向に動作して衝突力が軽減される。
【0170】
ロボットの動作を停止させるために必要となる各関節のトルク値の算出においては、全ての関節が同じ時間で停止すると仮定し、関節ごとに減速停止時間を算出した後、全ての減速停止時間のうちの最大値をいずれの関節の減速停止時間にも充てるようにすれば、衝突しても逃げ動作する余地が残され、衝突による力を吸収して損傷の発生を可及的に少なく抑えることができる。
【0171】
トルクを予測する際に使用するモータの位置・速度・加速度として、サーボドライバに位置指令すべく作業データの再生動作において演算した関節位置と、その関節位置をもとにして計算された速度および加速度をあてがうようにすれば、サーボドライバからモータの位置・速度・加速度の情報を取り込む時間等だけ迅速に衝突検出演算を行わせることができる。
【0172】
逆動力学演算においては、ロボットの各関節の加速度により各関節で発生するトルクならびに他の関節の加速度により発生する干渉トルクを示すn×nの慣性行列、遠心力とコリオリ力の影響を示すn×1の粘性行列、および重力加速度の影響により発生するトルクを示すn×3の重力行列を含むことにしているので、その演算精度は極めて高いものとなる。
【0173】
n×nの慣性行列における対角要素としての「関節の持つ加速度が該関節自体に及ぼすトルクの関係を示した慣性モーメント」に、減速機を含むモータロータの慣性モーメントを減速比の2乗倍して加算しておけば、各関節内における減速機を含むモータロータの慣性モーメントにより発生するトルクを考慮した衝突検出を行うことができる。
【0174】
逆動力学演算に供される式に、減速機の動粘性係数とクーロン摩擦トルクの要素を反映させるようにしておくと、各関節内のモータ軸受や減速機の摩擦抵抗を考慮した精度の高い衝突検出が実現される。
【0175】
逆動力学演算に供されるロボットの機構パラメータとして、関節に連結されるリンクの重心位置・質量・長さを与えておけば、演算が個々のロボットに則したものとなり、ましてや、慣性テンソルも付加しておけば、より一層精度のよいトルク予測が可能となる。
【0176】
トルク予測値との差分が求められる実際の関節駆動トルクとして実際にサーボドライバが生成したトルク指令値から算出されるトルクを使用すれば、演算速度を高く維持することができる。各モータにおけるトルク応答値から算出されるトルクとする場合には、現実のトルクとの比較になって衝突検出のための精度がさらに向上する。
【図面の簡単な説明】
【図1】 本発明に係る多関節ロボットにおける衝突検出・停止制御法が適用されているロボット制御系全体を示したブロック線図。
【図2】 関節数を3として簡略化した構造のロボットを表すと共に、リンクが障害物に当たったときの逃げ動作を表したロボットの概略図。
【図3】 ロボットコントローラ(制御装置)とティーチペンダントならびに関節駆動用モータとの間の信号伝達の概要を示した制御ブロック図。
【図4】 衝突の有無を判定する処理手順を表したフローチャート。
【図5】 イナーシャテンソルの基準座標を与えた第2リンクの説明図。
【図6】 サーボドライバからコントローラへ伝達される応答値の変更例を含んだ制御系全体を示すブロック線図。
【図7】 トルク指令値に代えてトルク応答値を採用する場合のサーボドライバのブロック線図。
【図8】 ブラシレスDCモータを使用している場合のサーボドライバのブロック線図。
【図9】 軌道計画によって生成された関節位置から得られる速度・加速度をもとにして逆動力学演算させるようにしたロボット制御系全体を示すブロック線図。
【図10】 衝突の有無を判定するにおいて図9に基づく処理手順を採用した場合のフローチャート。
【図11】 速度をサーボドライバにフィードフォワードした場合のロボット制御系全体のブロック線図。
【図12】 速度指令に対する速度応答の遅れの程度を表したものであり、(a)は速度をフィードフォワードしない場合の応答図、(b)はフィードフォワードした場合の応答図。
【図13】 停止処理する手順を表したフローチャート。
【図14】 モータを駆動するための各種制御ループが組み込まれたサーボドライバの構成概略図。
【図15】 サーボドライバから位置偏差を取り出して衝突の有無を判定すると共に、ひき続いて停止処理することもできるようになっていることを表した従来技術のブロック線図。
【符号の説明】
1,11 ,12 ,13 …モータ、2,21 ,22 ,23 …サーボドライバ、3…トルク制限器、71 …第1関節、72 …第2関節、73 …第3関節、8…障害物、10…ロボット、11…衝突検出部、12…停止処理部、13…コントローラ、15…ハードディスク、22…軌道計画部、23…電流検出器、25…速度・加速度計算部、291 ,292 ,293 …比較器、L1 …第1リンク、L2 …第2リンク、L3 …第3リンク、θm1 ,θm2 ,θm3 …サーボドライバが検出したモータの位置、θd 1 ,θd 2 ,θd 3 …サーボドライバが検出したモータの速度、θdd1 ,θdd2 ,θdd3 …サーボドライバが検出したモータの加速度、T1 ,T2 ,T3 …衝突が発生していない場合に各モータが発生しているトルク予測値、Tm1 ,Tm2 ,Tm3 …サーボドライバが実際に生成したトルク指令値、ΔT1 ,ΔT2 ,ΔT3 …トルク予測値とトルク指令値から算出されるトルクとの差分、ε1 ,ε2 ,ε3 …衝突判定値、Kpp…位置フィードバック比例ゲイン。

Claims (11)

  1. 複数の関節からなるロボットのリンクやリンク先端に把持されたツールまたはワークが周辺の障害物等に衝突したとき、リンク等の変形やロボット可動部の損傷を回避すべく衝突したことを検出しかつ直ちにロボットを停止させる方法において、
    ロボットの各関節駆動用モータを制御するためのサーボドライバが検出したモータの位置・速度・加速度から、衝突が発生していない場合に各モータが発生すべきトルクを、ロボットの各関節の位置θ、速度θd 、加速度θddとロボット機構パラメータとをもとにした
    で示す式に基づく逆動力学演算により予測し、
    該トルク予測値と実際の関節駆動トルクとの差分を求め、
    該差分の絶対値が予め設定された判定値より大きい場合に衝突が発生したものと見做し、
    複数の関節のうち停止もしくは低速で動作している関節あるいは慣性力が小さいため動作停止に必要なトルクが最大トルクと比較して十分小さい関節は、衝突があった後に衝突による干渉力を和らげるべく逃げ動作できるようにしたことを特徴とする多関節ロボットにおける衝突検出・停止制御法。
  2. 衝突発生時の各関節の速度と負荷イナーシャからロボットの動作を停止させるために必要な最小限のトルク値を関節ごとに算出し、その最小限のトルク値をサーボドライバのトルク制限器に設定すると共に全てのサーボドライバの位置フィードバック比例ゲインを0とし、強制的に速度指令値を0とした速度フィードバック制御による減速処理を行わせるようにしたことを特徴とする請求項1に記載された多関節ロボットにおける衝突検出・停止制御法。
  3. ロボットの動作を停止させるために必要な各関節のトルク値の算出においては、全ての関節が同じ時間で停止すると仮定し、関節ごとに減速停止時間を算出した後、全ての減速停止時間のうちの最大値をいずれの関節の減速停止時間にも充てるようにしたことを特徴とする請求項1または請求項2に記載された多関節ロボットにおける衝突検出・停止制御法。
  4. 衝突が発生していない場合に各関節を駆動するモータが発生すべきトルクを予測するときに使用されるモータの位置・速度・加速度は、サーボドライバが検出したモータの位置・速度・加速度に代えて、サーボドライバに位置指令すべく予め教示されている作業データの再生動作により演算した関節位置と該関節位置をもとにして計算された速度および加速度であることを特徴とする請求項1ないし請求項3のいずれか一項に記載された多関節ロボットにおける衝突検出・停止制御法。
  5. 前記逆動力学演算は、ロボットの関節数をnとして、ロボットの各関節の加速度により各関節で発生するトルクならびに他の関節の加速度により発生する干渉トルクを示すn×nの慣性行列、遠心力とコリオリ力の影響を示すn×1の粘性行列、および重力加速度の影響により発生するトルクを示すn×3の重力行列を含むことを特徴とする請求項1ないし請求項4のいずれか一項に記載された多関節ロボットにおける衝突検出・停止制御法。
  6. 前記n×nの慣性行列における対角要素としての「関節の持つ加速度が該関節自体に及ぼすトルクの関係を示した慣性モーメント」には、減速機を含むモータロータの慣性モーメントが減速比の2乗倍して加算され、各関節内における減速機を含むモータロータの慣性モーメントにより発生するトルクを考慮することができるようにしたことを特徴とする請求項5に記載された多関節ロボットにおける衝突検出・停止制御法。
  7. 前記逆動力学演算に供される式に、
    ただし、Cmi 関節iにおける減速機の動粘性係数
    (i=1,2,・・・n 以下同じ)
    θdi 関節iにおけるモータの速度応答
    Fcou i 関節iにおける減速機のクーロン摩擦トルク
    sgn (θdi ) 符号関数
    = 1 ; θd m>0のとき
    = 0 ; θd m=0のとき
    =−1 ; θd m<0のとき
    が加算され、各関節内のモータ軸受や減速機の摩擦抵抗を考慮することができるようにしたことを特徴とする請求項1ないし請求項6のいずれか一項に記載された多関節ロボットにおける衝突検出・停止制御法。
  8. 前記ロボットの機構パラメータは、各関節に連結されるリンクの重心位置・質量・長さであることを特徴とする請求項1ないし請求項7のいずれか一項に記載された多関節ロボットにおける衝突検出・停止制御法。
  9. 前記ロボットの機構パラメータには、慣性テンソルも付加されていることを特徴とする請求項8に記載された多関節ロボットにおける衝突検出・停止制御法。
  10. 前記実際の関節駆動トルクは、実際にサーボドライバが生成したトルク指令値から算出されるトルクであることを特徴とする請求項1ないし請求項9のいずれか一項に記載された多関節ロボットにおける衝突検出・停止制御法。
  11. 前記実際の関節駆動トルクは、各モータにおけるトルク応答値から算出されるトルクであることを特徴とする請求項1ないし請求項9のいずれか一項に記載された多関節ロボットにおける衝突検出・停止制御法。
JP2001081553A 2001-03-21 2001-03-21 多関節ロボットにおける衝突検出・停止制御法 Expired - Fee Related JP4756618B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001081553A JP4756618B2 (ja) 2001-03-21 2001-03-21 多関節ロボットにおける衝突検出・停止制御法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001081553A JP4756618B2 (ja) 2001-03-21 2001-03-21 多関節ロボットにおける衝突検出・停止制御法

Publications (2)

Publication Number Publication Date
JP2002283276A JP2002283276A (ja) 2002-10-03
JP4756618B2 true JP4756618B2 (ja) 2011-08-24

Family

ID=18937634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001081553A Expired - Fee Related JP4756618B2 (ja) 2001-03-21 2001-03-21 多関節ロボットにおける衝突検出・停止制御法

Country Status (1)

Country Link
JP (1) JP4756618B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3366107A1 (en) 2017-02-23 2018-08-29 Panasonic Corporation Harvesting equipment and harvest method
KR20200071588A (ko) * 2018-12-11 2020-06-19 주식회사 코아로봇 로봇 직접 교시 방법 및 직접 교시 로봇 시스템
SE544423C2 (en) * 2020-04-06 2022-05-17 Husqvarna Ab A robotic work tool system and method with collision-based command interface

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004201485A (ja) 2002-11-29 2004-07-15 Sony Corp モータ、並びにアクチュエータの制御器
JP4086765B2 (ja) * 2003-11-28 2008-05-14 ソニー株式会社 ロボット装置
JP2004181599A (ja) * 2002-12-05 2004-07-02 Sony Corp 脚式移動ロボット
US7366587B2 (en) 2002-12-05 2008-04-29 Sony Corporation Legged mobile robot
JP2004181600A (ja) * 2002-12-05 2004-07-02 Sony Corp 脚式移動ロボット
JP2004181601A (ja) * 2002-12-05 2004-07-02 Sony Corp 脚式移動ロボット
JP2004195554A (ja) * 2002-12-16 2004-07-15 Sony Corp 脚式移動ロボット
JP4115374B2 (ja) * 2003-11-18 2008-07-09 ソニー株式会社 ロボット装置
JP2004249374A (ja) * 2003-02-18 2004-09-09 Sony Corp 脚式移動ロボット
JP2004364396A (ja) * 2003-06-04 2004-12-24 Yaskawa Electric Corp モータの制御装置および制御方法
CN100413657C (zh) * 2003-07-29 2008-08-27 松下电器产业株式会社 控制机械手的方法
US7102315B2 (en) 2003-07-29 2006-09-05 Matsushita Electric Industrial Co., Ltd. Robot arm control method and control device
JP4223911B2 (ja) * 2003-09-25 2009-02-12 株式会社神戸製鋼所 衝突検知方法及び衝突検知装置
JP4258718B2 (ja) * 2003-09-29 2009-04-30 株式会社安川電機 ロボット制御装置
JP4440072B2 (ja) * 2004-10-26 2010-03-24 パナソニック株式会社 ロボットの制御方法
JP2006341271A (ja) * 2005-06-08 2006-12-21 Honda Motor Co Ltd スポット溶接ロボットの電極チップ整形監視方法及び同監視装置
JP4668251B2 (ja) * 2007-10-05 2011-04-13 株式会社神戸製鋼所 ロボットシステムの制御装置、制御方法およびそのプログラム
JP5689590B2 (ja) * 2009-05-18 2015-03-25 Juki株式会社 ミシン
EP2586577A4 (en) * 2010-06-22 2013-12-04 Toshiba Kk ROBOT CONTROL DEVICE
US8483877B2 (en) * 2010-09-03 2013-07-09 GM Global Technology Operations LLC Workspace safe operation of a force- or impedance-controlled robot
US9119655B2 (en) 2012-08-03 2015-09-01 Stryker Corporation Surgical manipulator capable of controlling a surgical instrument in multiple modes
ITMI20111868A1 (it) 2011-10-13 2013-04-14 Gima Spa Procedimento per il controllo dell'interferenza e/o collisione d'organi meccanici e sistema connesso
US9226796B2 (en) 2012-08-03 2016-01-05 Stryker Corporation Method for detecting a disturbance as an energy applicator of a surgical instrument traverses a cutting path
CA2879414A1 (en) * 2012-08-03 2014-02-06 Stryker Corporation Systems and methods for robotic surgery
FR3002048B1 (fr) * 2013-02-14 2016-07-01 Commissariat Energie Atomique Procede de detection amelioree de collision d'un robot avec son environnement, systeme et produit programme d'ordinateur mettant en œuvre le procede
JP5633623B2 (ja) * 2013-12-11 2014-12-03 株式会社デンソーウェーブ ロボットシステム
PL3017920T3 (pl) * 2014-11-07 2018-02-28 Comau S.P.A. Robot przemysłowy i sposób sterowania robotem przemysłowym
WO2017047009A1 (ja) 2015-09-16 2017-03-23 パナソニックIpマネジメント株式会社 ロボットの衝突検出方法
WO2017073052A1 (ja) * 2015-10-30 2017-05-04 川崎重工業株式会社 ロボットシステムの監視装置
CA3005038A1 (en) * 2015-11-11 2017-05-18 Mako Surgical Corp. Robotic system and method for backdriving the same
KR101724490B1 (ko) 2015-12-02 2017-04-07 기아자동차 주식회사 협업로봇을 이용한 차량 생산시스템 및 생산방법
KR101734241B1 (ko) 2015-12-10 2017-05-11 현대자동차 주식회사 트렁크 리드 힌지 지능형 로더유닛
WO2018219952A1 (en) 2017-05-29 2018-12-06 Franka Emika Gmbh Collision handling by a robot
JP6804479B2 (ja) * 2018-01-15 2020-12-23 Dmg森精機株式会社 モータ駆動制御装置およびこれを備えてなる工作機械
CN108247654A (zh) * 2018-02-05 2018-07-06 遨博(北京)智能科技有限公司 一种机器人的控制方法、装置和***
JP7211007B2 (ja) 2018-10-30 2023-01-24 セイコーエプソン株式会社 制御装置、ロボットシステムおよび制御方法
US10369701B1 (en) 2018-10-30 2019-08-06 Mujin, Inc. Automated package registration systems, devices, and methods
CN113165181A (zh) * 2019-01-17 2021-07-23 西门子股份公司 机器人碰撞检测***和方法及包括该***的机器人
DE102019108390B3 (de) * 2019-04-01 2020-08-06 Franka Emika Gmbh Vorgeben von sicheren Geschwindigkeiten für einen Robotermanipulator
CN111941403B (zh) * 2019-05-17 2023-07-04 本田技研工业株式会社 链节机构、其控制装置以及控制方法
WO2021186518A1 (ja) * 2020-03-16 2021-09-23 株式会社Fuji 多関節ロボット
DE112020006606B4 (de) 2020-03-26 2024-03-14 Mitsubishi Electric Corporation Reibungskompensationsvorrichtung, Kollisionserfassungsvorrichtung,Drehmomentvorsteuerungsberechnungsvorrichtung und Robotersteuerungsvorrichtung undReibungskompensationsverfahren
CN114012734B (zh) * 2021-12-03 2023-05-30 西安交通大学 一种参数自适应的机器人碰撞检测方法
CN114260900B (zh) * 2021-12-30 2023-08-29 库卡机器人制造(上海)有限公司 机器人的减速控制方法和装置、机器人组件和存储介质
CN114516052B (zh) * 2022-03-23 2023-12-22 杭州湖西云百生科技有限公司 并行实时高性能多轴机械臂的动力学控制方法及***
CN114800519B (zh) * 2022-05-20 2023-09-26 天津大学 一种考虑摩擦的六自由度工业机器人动力学参数辨识方法
CN115229849B (zh) * 2022-08-29 2024-06-14 哈尔滨博实自动化股份有限公司 一种关节型重载出炉机器人强冲击载荷下的振动抑制方法
CN115674190B (zh) * 2022-09-30 2024-05-07 深圳市越疆科技股份有限公司 协作机械臂及其运动控制方法、碰撞检测方法、控制***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04160605A (ja) * 1990-10-25 1992-06-03 Murata Mach Ltd 自動運転工作機械の衝突防止装置
JP2749724B2 (ja) * 1991-01-16 1998-05-13 ファナック株式会社 推定外乱による衝突検出方法
JP3459973B2 (ja) * 1999-10-22 2003-10-27 川崎重工業株式会社 駆動制御方法および駆動制御装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3366107A1 (en) 2017-02-23 2018-08-29 Panasonic Corporation Harvesting equipment and harvest method
JP2018134059A (ja) * 2017-02-23 2018-08-30 パナソニック株式会社 収穫装置及び収穫方法
KR20200071588A (ko) * 2018-12-11 2020-06-19 주식회사 코아로봇 로봇 직접 교시 방법 및 직접 교시 로봇 시스템
KR102130620B1 (ko) * 2018-12-11 2020-07-06 주식회사 코아로봇 로봇 직접 교시 방법 및 직접 교시 로봇 시스템
SE544423C2 (en) * 2020-04-06 2022-05-17 Husqvarna Ab A robotic work tool system and method with collision-based command interface

Also Published As

Publication number Publication date
JP2002283276A (ja) 2002-10-03

Similar Documents

Publication Publication Date Title
JP4756618B2 (ja) 多関節ロボットにおける衝突検出・停止制御法
US8583285B2 (en) Method and device for stopping a manipulator
JP6924146B2 (ja) ロボットシステムの監視装置
JP6238021B2 (ja) ロボット、ロボットの制御装置及び制御方法、並びに、ロボット用制御プログラム
US4621332A (en) Method and apparatus for controlling a robot utilizing force, position, velocity, spring constant, mass coefficient, and viscosity coefficient
JP4683073B2 (ja) ロボット把持制御装置及びロボット把持制御方法
JP5327722B2 (ja) ロボットの負荷推定装置及び負荷推定方法
KR100439466B1 (ko) 로봇제어장치
CN110494260B (zh) 用于控制协作机器人的装置和方法
JP6664138B2 (ja) 制御方法、及びロボット装置
JP2009285824A (ja) ロボットマニピュレーターの制御装置及びその制御方法
WO2003068464A1 (fr) Procede de commande d'entrainement et controleur d'entrainement
JP2020101541A (ja) トルク推定のための方法および装置
JP2013223921A (ja) 力またはインピーダンス制御ロボットの作業空間安全動作
JP3367641B2 (ja) ロボットの制御装置
Lo et al. Cooperative teleoperation of a multirobot system with force reflection via internet
JP2004364396A (ja) モータの制御装置および制御方法
JP2022118153A (ja) ロボット操作のパラメーターを推定するための方法および計算システム
Je et al. Current based compliance control method for minimizing an impact force at collision of service robot arm
Zhang et al. Robot collision detection without external sensors based on time-series analysis
JP2006116650A (ja) ロボットの衝突検出方法
JP5904445B2 (ja) ロボット用制御装置
JP2003245881A (ja) ロボットの制御装置および制御方法
JPH1170490A (ja) 産業用ロボットの衝突検出方法
Mohammad et al. Towards human-robot collaboration with parallel robots by kinetostatic analysis, impedance control and contact detection

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110331

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110517

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110527

R150 Certificate of patent or registration of utility model

Ref document number: 4756618

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140610

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees