説明

7軸多関節ロボットの制御方法及び制御プログラム

【課題】手首の位置を移動する際に7軸多関節ロボットの形態の急激な変化を抑制する。
【解決手段】7つの回転軸のうちのいずれか1つを冗長軸に、残りの回転軸のうちの3つを基軸に、かつ3つの基軸のうちのいずれか1つを変数軸に定め、かつ、基端から前記手首までの直線距離と基端に最も近い回転軸の延在方向における基端から手首までの距離とに基づく手首の位置と前記変数軸の関節角とに関して定式化された4次方程式を解いて手首の位置を3つの基軸の関節角に逆変換するステップを含み、電源オン時に、7軸多関節ロボットの初期形態に基づいて4つの第1求解演算式のうちいずれか1つを特定して記憶し、 電源オンの後、記憶した1つの第1求解演算式を用いて逆変換するステップを遂行して手首の目標位置から3つの基軸の関節角を算定し、それにより、7軸多関節ロボットの動作を制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、7軸多関節ロボットの制御方法及び制御プログラムに関し、特に手首の位置を移動させる際に7軸多関節ロボットの形態の急激な変化を抑える制御方法及び制御プログラムに関する。
【背景技術】
【0002】
近年、産業用ロボットの制御技術は、コンピュータ技術の進歩に伴って進歩しており、これに伴って産業用ロボットに要求される動作はますます複雑かつ高度化しており、またその精度についてもより高速かつ高精度化が必要とされている。例えば、従来から産業用ロボットとして広く用いられている6軸多関節ロボットの場合、ある決まった位置に移動する用途としては十分であるが、移動空間に存在するさまざまな障害物を巧みに回避しながら複雑な作業を行うことが困難であった。そこで、6軸多関節ロボットに更に1軸(冗長軸)を追加した7軸多関節ロボット(例えば、特許文献1を参照)の開発が近年盛んになってきている。
【0003】
7軸多関節ロボットの制御方法としては、従来の6軸多関節ロボットの場合と同様に、ロボットアーム先端の手首の位置がたどるべき経路上の点を順次指示する方法や、当該手首の初期位置及び目標位置のみを指示して途中の経路を問わない方法が用いられている。なお、これらの方法が用いられる場合には、当該手首の位置及び姿勢(手首座標)から各関節角(関節角座標)を求める逆変換(座標変換)が行われる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平6−315880号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、7軸多関節ロボットの場合、6軸多関節ロボットと異なって冗長軸(1軸)が存在するので、同じ手首の位置において逆変換により求められる各関節角は一義的に定まらない。
【0006】
このため、手首の位置をある点Aから別の点Bに移動させる場合、例えば点Aと点Bとにおける第1関節の関節角が180°異なるというように、当該点Aの座標に基づく逆変換により求められかつ特定された各関節角と、当該点Bの座標に基づく逆変換により求められかつ特定された各関節角とが大きく乖離してしまい、ロボットの形態が急激に変化するという問題があった。
【0007】
なお、特許文献1に開示された技術は、先端制御点の位置や姿勢を元のままで肘の部分を回転させる方法であり、手首の位置を移動させる際にロボットの形態の急激な変化を抑制することについては何ら示唆も開示もされていない。
【0008】
本発明は、このような課題を解決するためになされたもので、その目的は、手首の位置を移動させる際にロボットの形態の急激な変化を抑えることである。
【課題を解決するための手段】
【0009】
上記の課題を解決するための本発明に係る7軸多関節ロボットの制御方法は、先端に設けられた手首と基端から当該手首に向かって順に設けられた7つの関節とを具備し、前記7つの関節が回転軸をそれぞれ有しかつそれぞれの回転軸の周りに次の関節を回転させるように構成された7軸多関節ロボットの制御方法であって、前記7つの回転軸のうちのいずれか1つを冗長軸に、残りの回転軸のうちの3つを基軸に、かつ当該3つの基軸のうちのいずれか1つを変数軸に定め、かつ、前記基端から前記手首までの直線距離と前記基端に最も近い前記回転軸の延在方向における前記基端から前記手首までの距離とに基づく手首の位置と前記変数軸を有した関節の関節角とに関して定式化された4次方程式を解いて前記手首の位置を前記3つの基軸を有した各関節の関節角に逆変換するステップを含み、前記4次方程式は、その4つの解にそれぞれ対応する4つの第1求解演算式を用いて解くことが可能なものであり、かつ、前記7軸多関節ロボットが採り得る形態は、前記4つの解ひいては前記4つの第1求解演算式に対応して定まるものであり、電源オン時に、当該電源オン時における前記7軸多関節ロボットの初期形態に基づいて、前記4つの第1求解演算式のうちいずれか1つを特定して記憶し、前記電源オンの後、前記記憶した1つの第1求解演算式を用いて前記逆変換するステップを遂行して前記手首の目標位置から前記3つの基軸を有した各関節の関節角を算定し、それにより、前記7軸多関節ロボットの動作を制御する、ものである。
【0010】
上記の制御方法であって、前記電源オン時に、前記4つの第1求解演算式を用いて前記4次方程式を解いて前記4つの解を求め、当該4つの解それぞれについて当該電源オン時における前記手首の位置を前記3つの基軸を有した各関節の関節角の少なくともいずれか1つに逆変換し、当該1つの基軸を有した関節の関節角と前記電源オン時の前記7軸多関節ロボットの初期形態に対応する前記3つの基軸のうちの1つを有した関節の関節角とを比較することにより、前記4次方程式の4つの第1求解演算式のうちいずれか1つを特定して記憶する、としてもよい。
【0011】
上記の制御方法であって、全ての互いに隣り合う前記関節の回転軸が互いに垂直であり、前記基端から前記手首に向かって順に設けられた7つの関節を、それぞれ、第1関節、第2関節、第7関節、第3関節、第4関節、第5関節、及び第6関節と定義した場合、前記冗長軸は前記第7関節の回転軸であり、前記3つの基軸は前記第1関節の回転軸、前記第2関節の回転軸、及び前記第3関節の回転軸であり、かつ前記変数軸は前記第3関節の回転軸である、としてもよい。
【0012】
上記の制御方法によれば、4次方程式の4つの解を求めるための4つの第1求解演算式と、4つの解に応じてとり得る4つの形態とを予め対応付けておき、電源オン時の7軸多関節ロボットの初期形態に基づいて、4つの第1求解演算式のうちいずれか1つを、電源オンより後の逆変換処理において使用する。この結果、手首の位置を目標位置に移動する際に、7軸多関節ロボットの形態の急激な変化を抑えることが可能となる。さらに、電源オン時の7軸多関節ロボットの初期形態を特定するためには、4次方程式の4つの第1求解演算式それぞれについて1回限り演算すればよい。電源オンより後の逆変換処理においては、特定された1つの第1求解演算式以外の残りの3つの第1求解演算式については演算しなくても済むので、逆変換処理に要する演算量を抑えることができ、7軸多関節ロボットの制御の高速化が図られることとなる。
【0013】
上記の制御方法であって、前記4つの第1求解演算式を用いて前記4次方程式を解く際に、フェラーリの解法に基づいた前記4次方程式を解くための分解方程式として定式化された3次方程式の3つの解に含まれる1つの実数解を求め、かつ当該求めた前記3次方程式の1つの実数解を用いて前記4つの第1求解演算式を演算する、としてもよい。
【0014】
上記の制御方法であって、前記3次方程式の3つの解に含まれる1つの実数解を求める際に、前記3次方程式の判別式が0又は正の場合には、カルダノの解法により求まる前記3次方程式の1つの実数解と2つの虚数解のうち当該1つの実数解に対応した当該カルダノの解法に基づく第2求解演算式を使用し、前記3次方程式の判別式が負の場合には、ビエタの解法により求まる前記3次方程式の3つの実数解のうち絶対値が同一かつ符号の異なる2つの実数解以外の1つの実数解に対応した当該ビエタの解法に基づく第3求解演算式を使用する、としてもよい。
【0015】
上記の制御方法によれば、4次方程式を解くためにはフェラーリの解法に基づいた当該4次方程式を解くための分解方程式として定式化された3次方程式を解くことになるが、当該3次方程式であるので3つの解が必ず生じる。よって、3次方程式の3つの解に必ず含まれる1つの実数解を求めるように予めしておけば、4次方程式を解く際に3次方程式の3つの解が無秩序に選ばれることがなくなるので、4次方程式の4つの解を定常的に求めることが可能となる。この結果、7軸多関節ロボットについての急激な変動をさらに抑えることができる。また、3次方程式を解く場合に1つの実数解のみを求めることにしたので、複素数演算をしなくて済み、演算量を抑えることができ、システムへの実装が容易なものとなる。
【0016】
上記の課題を解決するための本発明に係る7軸多関節ロボットの制御プログラムは、先端に設けられた手首と基端から当該手首に向かって順に設けられた7つの関節とを具備し、前記7つの関節が回転軸をそれぞれ有しかつそれぞれの回転軸の周りに次の関節を回転させるように構成された7軸多関節ロボットの制御方法をコンピュータに遂行させる、7軸多関節ロボットの制御プログラムであって、前記制御方法は、前記7つの回転軸のうちのいずれか1つを冗長軸に、残りの回転軸のうちの3つを基軸に、かつ当該3つの基軸のうちのいずれか1つを変数軸に定め、かつ、前記基端から前記手首までの直線距離と前記基端に最も近い前記回転軸の延在方向における前記基端から前記手首までの距離とに基づく手首の位置と前記変数軸を有した関節の関節角とに関して定式化された4次方程式を解いて前記手首の位置を前記3つの基軸を有した各関節の関節角に逆変換するステップを含み、前記4次方程式は、その4つの解にそれぞれ対応する4つの第1求解演算式を用いて解くことが可能なものであり、かつ、前記7軸多関節ロボットが採り得る形態は、前記4つの解ひいては前記4つの第1求解演算式に対応して定まるものであり、電源オン時に、当該電源オン時における前記7軸多関節ロボットの初期形態に基づいて、前記4つの第1求解演算式のうちいずれか1つを特定して記憶し、前記電源オンの後、前記記憶した1つの第1求解演算式を用いて前記逆変換するステップを遂行して前記手首の目標位置から前記3つの基軸を有した各関節の関節角を算定し、それにより、前記7軸多関節ロボットの動作を制御する、ものである。
【発明の効果】
【0017】
手首の位置を移動する際に7軸多関節ロボットの形態の急激な変化を抑制することができる。
【図面の簡単な説明】
【0018】
【図1】図1は、本発明の実施の形態に係る7軸多関節ロボットとロボット制御装置とによるロボットシステムの構成を示した図である。
【図2】図2は、図1に示した7軸多関節ロボットのリンク構造を模式的に表した図である。
【図3】図3は、4次方程式の4つの第1求解演算式のいずれか1つを特定する処理の流れを表すフローチャートである。
【図4】図4は、記憶された4次方程式の4つの求解方程式のうちのいずれか1つを用いて実行される逆変換処理の流れを示すフローチャートである。
【図5】図5は、6軸多関節ロボットの第2関節と第3関節との間に第7関節が設けられた7軸多関節ロボットの構成を示した図である。
【図6】図6は、4次方程式の4つの解に応じて採り得る7軸多関節ロボットの4つの形態を示した図である。
【発明を実施するための形態】
【0019】
以下、本発明の好ましい実施の形態を、図面を参照しながら説明する。なお、以下では全ての図を通じて同一又は相当する要素には同一の参照符号を付して、その重複する説明を省略する。
【0020】
(本発明の概念)
最初に本発明の概念を説明する。
【0021】
図5は、基端から先端の手首に向って順に第1乃至第6回転軸A1乃至A6を有した第1乃至第6関節JT1乃至JT6を具備する6軸多関節ロボットにおいて、第2関節JT2(第2回転軸A2)と第3関節JT3(第3回転軸A3)との間に第7回転軸JT7を有した第7関節JT7を設けた場合の7軸多関節ロボット100の構成を示した図である。なお、図5において、7軸多関節ロボット100の手首を構成する第4乃至第6関節JT4〜JT6(手首軸:第4乃至第6回転軸A4〜A6)は、図面から省略している。
【0022】
7軸多関節ロボット100を対象とした逆変換を行う場合、手首の姿勢を規定する手首軸(A4〜A6)はひとまず無視しておき、当該手首の位置を規定する残りの4つの回転軸A1、A2、A7、A3のうち、1つの回転軸(例えば、第7回転軸A7)を冗長軸とし、かつ残りの3つの回転軸(例えば、第1乃至第3回転軸A1〜A3)を基軸とし、当該基軸を有した各関節の関節角を未知変数として取り扱う手法が考えられる。
【0023】
ここで、図5に示す通り、基準座標系(XYZ座標系)における原点O(0,0,0)と7軸多関節ロボット100の手首の位置Pとの間の直線距離をRh、当該基準座標系における手首の位置PのZ軸方向の距離(基端に最も近い第1回転軸の延在方向における基端から手首までの距離)をZhとして表すこととする。さらに、基準座標系における手首の位置Pを(Xp,Yp,Zp)と表したときに、Rh及びZhについて次式が成立する。
【0024】
Rh=Xp+Yp+Zp・・・式(1−1)
Zh=Zp ・・・式(1−2)
また、Rh、Zhは、上記の式(1−1)及び(1−2)とは別に、7軸多関節ロボット100の各リンク長と第1乃至第3及び第7回転軸A1〜A3、A7を有した第1乃至第3及び第7関節JT1〜JT3、JT7の関節角θ1、θ2、θ3、θ7を用いて表すことができる。
【0025】
よって、これらの式を整理すると、次式の通り変数t(=tanθ3)についての4次方程式を得ることが出来る。
【0026】
+a・t+b・t+c・t+d=0 ・・・(2)
なお、式(2)の4次方程式における変数tの解は、以下の4つの第1求解演算式(3−1)〜(3−4)から求められる解t1、t2、t3、t4の計4通り存在する。
【0027】
t1=(−M1−(M1−4・N1)0.5)/2−a/4 ・・・(3−1)
t2=(−M1+(M1−4・N1)0.5)/2−a/4 ・・・(3−2)
t3=(−M2−(M2−4・N2)0.5)/2−a/4 ・・・(3−3)
t4=(−M2+(M2−4・N2)0.5)/2−a/4 ・・・(3−4)
よって、4つの解t1乃至t4それぞれについて“θ3(n)=atan(t(n)):但し、n=1〜4”を算定することにより、関節角θ3として4つの解θ3(1)、θ3(2)、θ3(3)、θ3(4)を得ることができる。なお、関節角θ3が求まれば、関節角θ1及び関節角θ2についても一義的に求められるので、関節角θ3の4つの解θ3(1)、θ3(2)、θ3(3)、θ3(4)に対応した関節角θ1の4つの解θ1(n)(但し、n=1〜4)及び関節角θ2の4つの解θ2(n)(但し、n=1〜4)が求められる。この結果、同一の手首の位置Pであっても、7軸多関節ロボット100の形態としては、図6に示されるような4つの形態が考えられるので、7軸多関節ロボット100の合理的な動作が行われるためには、7軸多関節ロボットの形態の急激な変化を抑えることが求められる。
【0028】
ところで、式(2)の4次方程式の4つの解t1乃至t4に関する第1求解演算式(式(3−1)〜式(3−4))の中で、M1、M2、N1、N2は、式(2)の4次方程式の左辺中の(a,b,c,d)、及び4次方程式の「フェラーリの解法」に基づいた式(2)の4次方程式の分解方程式である3次方程式の解uによって求められる。なお、この3次方程式は、
p=−3a/8+b ・・・(4−1)
q=a/8−ab/2+c ・・・(4−2)
r=−3a/256+ab/16−ac/4+d ・・・(4−3)
とおいた場合に、次式のように、変数yについての3次方程式として表される。
【0029】
8y−4py−8ry+4pr−q=0 ・・・(5)
しかしながら、式(5)の3次方程式の解としてu1、u2、u3の3つが得られるので、これらの解u1乃至u3のうちどの解が用いられても、式(2)の4次方程式の解t1、t2、t3、t4を求めることができるという問題が生じる。そこで、式(5)の3次方程式を解く機会毎に、3つの解u1、u2、u3のうち異なるものが用いられてしまうと、式(2)の4次方程式の4つの解t1、t2、t3、t4の組合せが変化するという問題が発生する。
【0030】
例えば、以下の表1は式(5)の3次方程式の3つの解u1、u2、u3それぞれを用いたときの式(2)の4次方程式の4つの解t1、t2、t3、t4から得られる関節角θ3の組合せの例を示した表である。表1において、式(5)の3次方程式の解u1を採用した場合、式(2)の4次方程式の4つの解t1、t2、t3、t4から得られる関節角θ3の組合せは(−43°,51°,−20°,28°)である。一方、3次方程式の解u2を採用した場合、4次方程式の4つの解t1、t2、t3、t4から得られる関節角θ3の組合せは(−43°,−20°,51°,28°)であり、3次方程式の解u1を採用した場合と比べて、4次方程式の解t2、t3に対応する関節角θ3が真逆になっている。あるいは、3次方程式の解u3を採用した場合、4次方程式の解t1、t2、t3、t4から得られる関節角θ3の組合せは(−43°,−20°,51°,28°)であり、3次方程式の解u1を採用した場合と比べて、4次方程式の解t1、t4に対応する関節角θ3が真逆になっている。
【0031】
【表1】

【0032】
従って、式(5)の3次方程式における3つの解u1、u2、u3の中で常に同じ解(例えば、解u1)を採用し続け、かつ式(2)の4次方程式における4つの解t1、t2、t3、t4の中で常に同じ解(例えば、解t1)を採用し続けなければ、7軸多関節ロボット100の形態が大きく変化してしまう。詳述すると、表1はある手首位置Pxに対応する3つの解u1〜u3毎の4つの解t1、t2、t3、t4を表しているものとし、かつ手首位置Pxに関して4つの解t1〜t4の中から例えば解t1が選択されたものとする。この場合において、手首位置Pxから少しずれた手首位置Pyについて4つの解t1〜t4を演算により求めたところ、表1に示される値はそれぞれ少しずつずれた値となる。手首位置Pyに関し、手首位置Pxの場合と同様に解t1(少しずつずれた値)を選択すれば問題ない。しかし、解t1(少しずつずれた値)以外の例えば解t2(少しずつずれた値)を選択したとすると、関節角θ3、及びこの関節角θ3を用いて算出される関節角θ1、θ2の値が手首位置Pxのときの値と大きく異なってしまう。この結果、第1乃至第3関節JT1〜JT3及び第7関節JT7の移動量が大きくなるので、このような事態を避ける必要がある。
【0033】
そこで、7軸多関節ロボット100の形態の急激な変化を抑えるための方法の一つとして、各関節角の条件(±90°以内であるか等)やその組合せに基づいて図6に示すような4つの形態の中で今どの形態となっているのかを常時把握するようにし、かつその把握した形態が得られるような一つの解を4つの解t1、t2、t3、t4の中から選択するという制御方法が考えられる。しかしながら、逆変換処理が行われる毎に、上記のような複雑な条件の判別が必要となり、逆変換処理が複雑になるという問題が生じる。
【0034】
その他の方法としては、式(2)の4次方程式を解くために必要となる式(5)の3次方程式の3つの解u1、u2、u3の中から常時同じ解(例えば、解u1)を採用することで、4つの第1求解演算式(式(3−1)乃至式(3−4))と図6に示すような4つの形態とをあらかじめ1対1に対応付けておくという方法が考えられる。しかしながら、この場合には、式(5)の3次方程式の解法として複素数を取り扱う必要が生じてくるので、システムへの実装が困難なものとなる。
【0035】
そこで、本発明者は、4つの第1求解演算式(式(3−1)乃至式(3−4))と図6に示すような4つの形態とをあらかじめ1対1に対応付けるとともに、式(5)の3次方程式について常に同じ解を採用し続ける方法として、3次方程式の解法として広く知られている「カルダノの解法」と「ビエタの解法」とを使い分けることを考えた。両者の解法は、ともに3つの解を得ることができるが、次の表2に示すように、3次方程式の判別式Dの条件(0より小、0と等しい、0より大)によっては負の√演算、つまり複素数演算を要する場合がある。なお、3次方程式の判別式Dの条件としては、次の3つの条件C1、C2、C3が挙げられる。
【0036】
条件C1(D<0):3つの実数解が得られる
条件C2(D=0):1つの実数解(3重解)が得られる
条件C3(D>0):1つの実数解と2つの虚数解(共役複素数)が得られる
【0037】
【表2】

【0038】
表2に示すとおり、「カルダノの解法」を採用した場合、条件C1の場合には3つの実数解u1〜u3の全てにおいて負の√演算(複素数演算)が必要であり、条件C3の場合には2つの虚数解u2、u3において負の√演算が必要となり、かつ条件C2の場合には負の√演算が不要となるという特徴がある。
【0039】
「ビエタの解法」を採用した場合、条件C2の場合には3重解である実数解u1において負の√演算が必要となる場合があり、条件C3の場合には全ての解(実数解u1、虚数解u2、u3)において負の√演算が必要となる場合があり、かつ条件C1の場合には負の√演算が不要となるという特徴がある。
【0040】
7軸多関節ロボットを制御するロボット制御装置の制御プログラム上、負の√演算を演算することは複雑かつ困難であるので、「カルダノの解法」と「ビエタの解法」とを上手く使い分ける必要がある。そこで、本出願人は、条件C2と条件C3との場合には、負の√演算を要さずに実数解u1が求められる「カルダノの解法」を用いればよいことに気付いた。
【0041】
一方、条件C1の場合には、負の√演算を必要としない「ビエタの解法」を用いればよいことになるが、この場合、3つの実数解(u1〜u3)が求められるので、それらの3つの実数解から1つの実数解を選定する必要がある。さらに、ロボットの形態変化を抑えるべく条件C1〜C3のいずれが成立しても常に同一の解u1を採用し続ける必要があるため、「ビエタの解法」により求められた3つの実数解(u1〜u3)のうちのどの解が「カエダノの解法」により求められた1つの実数解u1と対応づけられたものであるかを判断する必要がある。そこで、実数解u2と実数解u3は±が異なるものの絶対値が同じであるという特徴を利用して、両者ではない解を実数解u1として採用することとした。
【0042】
この結果、3次方程式の判別式Dの条件C1〜C3のいずれが成立しても、負の√演算が行われずに済み、かつ条件C1〜C3のいずれが成立しても同一の実数解u1が常時求められることとなる。さらに、この実数解u1を常時採用して4次方程式の4つの解t1、t2、t3、t4の組合せが求められることになるので、7軸多関節ロボットの形態の急激な変化が抑制される。
【0043】
(実施の形態)
次に、上述の本発明の概念に基づく本発明の実施の形態を説明する。
[ロボットシステムの構成]
図1は、本発明の実施の形態に係る7軸多関節ロボットとロボット制御装置とによるロボットシステムの構成を示した図である。図2は、図1に示した7軸多関節ロボット100のリンク構造を模式的に表した図である。
【0044】
図1及び図2に示すように、7軸多関節ロボット100は、先端に設けられた手首と所定の基端から当該手首に向かって順に設けられた7つの関節JT1〜JT7とを具備し、7つの関節JT1〜JT7が第1乃至第7回転軸A1〜A7をそれぞれ有しかつそれぞれの回転軸の周りに次の関節を回転させるように構成されている。なお、本実施の形態においては、7軸多関節ロボット100は、基台2が作業スペース下側の床面に設置される所謂床置き型の垂直多関節ロボットとして構成されている。さらに、7軸多関節ロボット100は、基端から手首に向って順に設けられた6つの関節JT1〜JT6を具備し、6つの関節JT1〜JT6が第1乃至第6回転軸A1〜A6をそれぞれ有し、かつそれぞれの回転軸の周りに次の関節を回転させるように構成された6軸多関節ロボットにおいて、第2関節JT2(第2回転軸A2)と第3関節JT3(第3回転軸A3)との間に第7関節JT7(第7回転軸A7)が設けられ、第7関節JT7の第7回転軸A7は第2回転軸A2及び第3回転軸A3に対して垂直であることにより構成されている。
【0045】
なお、7つの関節及び7つの回転軸に付与された符号は便宜上付したものであり、7つの関節及び7つの回転軸それぞれを識別可能であれば如何なる符号であってもよい。
【0046】
本実施の形態では、後述するX0軸、Y0軸、Z0軸による直交座標系を「基準座標系」と呼び、これをΣ0と表記する。また、後述するX6軸、Y6軸、Z6軸による直交座標系を「手首座標系」と呼び、これをΣRと表記する。Σ0の原点に対するΣR原点のX0軸、Y0軸、Z0軸方向への変位を「手首位置」と呼び、Σ0に対するΣRのX0軸、Y0軸、Z0軸周りの角変位を「手首姿勢」と呼ぶこととする。
【0047】
また、ロボット先端のことを「手先」と呼ぶ。本実施の形態では、ツール部材11の先端が手先となる。また、主に手首姿勢に影響を及ぼす部分を「手首」と呼ぶこととすると、図1に示す7軸多関節ロボット100においては、後述のようにΣRの原点は第4乃至第6回転軸A4乃至A6が一点で交わった点とされているので、第4乃至第6関節JT4乃至JT6に関する部分が手首となる。他方、手首位置に影響を及ぼすのは第1乃至第3関節JT1乃至JT3、及び第7関節JT7に関する部分である。「手首」には、アタッチメント、ハンド、ツール、エンドエフェクタ等が含まれる。なお、本実施の形態において、「手首」は後述の手首装置10に対応している。
【0048】
ΣRにおける手先位置を把握しておけば、手首位置及び手首姿勢が与えられた場合に、Σ0における手先位置を求めることができる。また、手首姿勢、Σ0における手先位置及び冗長軸の角度が与えられた場合に、これを実現するような第1乃至第6関節JT1乃至JT6の関節角θ1乃至θ6を求めることができる。
【0049】
なお、本実施の形態においては、三軸交点は、手首軸としての第4乃至第6回転軸A4乃至A6の3軸が交わった一点に対応している。三軸交点の特徴としては、ツール部材11に対する三軸交点の位置はツール部材11とアーム部材8との相対角(すなわち、第6回転軸A6の回転角)と無関係に一定であり、アーム部材6に対する三軸交点の位置についてもアーム部材6とアーム部材7との相対角(すなわち、第4回転軸A4の回転角)とは無関係に一定である。このようにすれば、手先(ツール部材11の先端)の所望の位置・姿勢が与えられた場合に、手首軸の位置を実現する手首軸以外の残りの軸を決定した上で、当該手先の所望の位置・姿勢を実現するような手首軸を決定できるという利点がある。
【0050】
基台2には、旋回台3、アーム部材(リンク)4、5、6、7、8、及びアタッチメント9がこの順に連設されている。なお、アタッチメント9の先端を成すフランジ面には、各種の作業内容に応じて適宜選択されたツール部材11が着脱可能に取り付けられている。基台2からアタッチメント9までの連設された部材2〜9は互いに相対回転可能となるよう連結されている。
【0051】
詳述すると、基台2と旋回台3との連結部である第1関節JT1において基台2に対する旋回台3の第1回転軸A1周りの回転(旋回)が許容されている。なお、基台2の上面中央部には基端として基準座標系(X0軸、Y0軸、Z0軸による直交座標系)の原点O(0,0,0)が設定されている(図2参照)。また、第1関節JT1には、当該第1関節JT1の関節座標系(X1軸、Y1軸、Z1軸による直交座標系)が設定されている。
【0052】
旋回台3の上端部とアーム部材4の一端部との連結部である第2関節JT2において旋回台3に対するアーム部材4の第2回転軸A2周りの回転(回動)が許容されている。なお、第2関節JT2には、当該第2関節JT2の関節座標系(X2軸、Y2軸、Z2軸による直交座標系)が設定されている。ここで、基準座標系における第2関節JT2のZ軸方向の距離(以下、第1リンク長と呼ぶ)をL0と表すこととする。また、基準座標系における第1関節JT1と第2関節JT2との間におけるY軸方向の距離(以下、第2リンク長と呼ぶ)をL1と表すこととする。
【0053】
アーム部材4の他端部とアーム部材5の一端部との連結部である第7関節JT7においてアーム部材4に対するアーム部材5の第7回転軸A7周りの回転(旋回)が許容されている。なお、第7関節JT7には、当該第7関節JT7の関節座標系(X7軸、Y7軸、Z7軸による直交座標系)が設定されている。
【0054】
アーム部材5の他端部とアーム部材6の一端部との連結部である第3関節JT3においてアーム部材5に対するアーム部材6の第3回転軸A3周りの回転(回動)が許容されている。なお、第3関節JT3には、当該第3関節JT3の関節座標系(X3軸、Y3軸、Z3軸による直交座標系)が設定されている。ここで、基準座標系における第2関節JT2と第3関節JT3との間におけるZ軸方向の距離(以下、第3リンク長と呼ぶ)をL2と表すこととする。
【0055】
アーム部材6の他端部とアーム部材7の一端部との連結部である第4関節JT4においてアーム部材6に対するアーム部材7の第4回転軸A4周りの回転(旋回)が許容されている。なお、第4関節JT4には、当該第4関節JT4の関節座標系(X4軸、Y4軸、Z4軸による直交座標系)が設定されている。ここで、基準座標系における第3関節JT3と第4関節JT4との間におけるZ軸方向の距離(以下、第4リンク長と呼ぶ)をL3と表すこととする。また、基準座標系における第3関節JT3と第4関節JT4との間におけるY軸方向の距離(以下、第5リンク長と呼ぶ)をL4と表すこととする。
【0056】
アーム部材7の他端部とアーム部材8の一端部との連結部である第5関節JT5においてアーム部材7に対するアーム部材8の第5回転軸A5周りの回転(回動)が許容されている。なお、第5関節JT5には、当該第5関節JT5の関節座標系(X5軸、Y5軸、Z5軸による直交座標系)が設定されている。
【0057】
アーム部材8の他端部とアタッチメント9の一端部との連結部である第6関節JT6においてアーム部材8に対するアタッチメント9の第6回転軸A6周りの回転(旋回)が許容される。なお、第6関節JT6には、当該第6関節JT6の関節座標系としてX6軸、Y6軸、Z6軸による直交座標系が設定されている。このX6軸、Y6軸、Z6軸による直交座標系は、第4乃至第6回転軸A4乃至A6が一点で交わった点を原点に持っている。ここで、基準座標系における第5関節JT5と第6関節JT6との間におけるZ軸方向の距離(以下、第6リンク長と呼ぶ)をL5と表すこととする。
【0058】
基台2が床面に適正に設置されると、基台2に最も近い第1回転軸A1は鉛直方向(基台2から第1関節JT1への延在方向)に指向し、第2回転軸A2は水平方向(床面と平行な方向)に指向する。また、第7回転軸A7は第2回転軸A2と直交する方向であって、かつアーム部材4の延在方向に指向する。また、第3回転軸A3は第7回転軸A7と直交する方向であって、かつ水平方向に指向する。また、第4回転軸A4は第3回転軸A3と直交する方向であって、かつアーム部材6の延在方向に指向する。また、第5回転軸A5は第4回転軸A4と直交する方向であって、かつ水平方向に指向する。また、第6回転軸A6は第5回転軸A5と直交する方向であって、かつアーム部材8の延在方向に指向する。よって、第1乃至第7回転軸A1〜A7は、全ての互いに隣り合う関節の回転軸が互いに垂直となるように配置されている。
【0059】
アーム部材7、8、及びアタッチメント9は、アタッチメント9に取り付けられるツール部材11に微細な動作を行わせるための人間の手首に似せた構造体10(以下、手首装置という。)を成している。第1回転軸A1、第2回転軸A2、第7回転軸A7、及び第3回転軸A3は、ツール部材11を手首装置10とともに水平旋回させたり揺動させたりするための回転軸として用いられ、7軸多関節ロボット100の主軸を成している。第4乃至第6回転軸A4〜A6は、手首装置10に設定される回転軸であり、所謂RBR(Roll−Bend−Roll)型の手首軸を成している。なお、手首装置10の手首軸は、RBR型に限られず、所謂BBR(Bend−Bend−Roll)型や3R(Roll−Roll−Roll)型の手首軸であってもよい。
【0060】
第1乃至第7関節JT1〜JT7にはそれぞれサーボモータM1〜M7及び位置検出器D1〜D7が設けられている。位置検出器D1〜D7は、例えば、ロータリーエンコーダで構成されている。上記の各サーボモータM1〜M7を駆動することにより、第1乃至第7関節JT1〜JT7においてそれぞれ許容される第1乃至第7回転軸A1〜A7周りの回転が行われる。なお、各サーボモータM1〜M7は互いに独立して駆動することが可能である。また、上記の各サーボモータM1〜M7が駆動されると、上記の各位置検出器D1〜D7によって上記の各サーボモータM1〜M7の第1乃至第7回転軸A1〜A7周りの回転位置の検出が行われる。
【0061】
ロボット制御装置200は、演算器210と記憶器220とを少なくとも備えて構成されており、7軸多関節ロボット100の基台2の周辺に配置されている。ロボット制御装置200は、例えば、コンピュータで構成され、演算器210及び記憶器220は、それぞれ、CPU及び内部メモリで構成される。なお、ロボット制御装置200は、7軸多関節ロボット100と遠隔に配置されていてもよいし、7軸多関節ロボット100と物理的に着脱可能な形態で接続されてもよい。
【0062】
ロボット制御装置200は、7軸多関節ロボット100の動作を制御する。具体的には、ロボット制御装置200は、7軸多関節ロボット100の第1乃至第7関節JT1〜JT7が具備するサーボモータのサーボ制御により、アタッチメント9に取り付けられたツール部材11を任意の位置及び姿勢に任意の経路に沿って移動させる。
【0063】
なお、ロボット制御装置200は、ティーチペンダント等の外部装置(図示せず)と接続可能である。この外部装置によって、ロボット制御装置200は、オペレータの操作に応じて7軸多関節ロボット100を並進又は回転運動させるための指令が入力される。演算器210は、制御時間毎に入力された上記の指令に基づいて、ツール部材11が当該制御時間の経過後に位置すべき目標位置を算出する。かかる目標位置は、制御時間と予め定められたツール部材11の制限移動速度等から求まる移動距離に基づいて算出された後、演算器210が演算可能となるようにツール座標系(Xt軸、Yt軸、Zt軸による直交座標系)において定義される座標データという形式に変換される。さらに、演算器210は、目標位置の座標データの逆変換処理を行い、制御時間の経過後にツール部材11を目標位置に移動させるために必要となる関節角θ1〜θ7を算定する。そして、演算器210は、これらの算定した関節角θ1〜θ7と上記の位置検出器D1〜D7により検出される電源オン時の回転位置との偏差に基づき、第1乃至第7関節JT1〜JT7に設けられたサーボモータの動作量の指令値を演算し、各サーボモータに供給する。これにより、ツール部材11が制御時間の経過毎に目標位置に移動されることとなる。
[逆変換式の定式化]
以下では、7軸多関節ロボット100の逆変換式の定式化を説明する。なお、手首装置10の姿勢を規定する手首軸(A4〜A6)はひとまず無視しておき、手首装置10の位置を規定する残りの4つの回転軸A1、A2、A7、A3のうち、第7回転軸A7を冗長軸とし、かつ残りの第1乃至第3回転軸A1〜A3を基軸とし、当該基軸A1〜A3を有した各関節JT1〜JT3の関節角θ1〜θ3を未知変数として取り扱う。また、第3回転軸A3を、後述の4次方程式の変数として用いられる関節角θ3を規定する変数軸とする。
【0064】
まず、基準座標系から見た第1関節JT1の位置ベクトル[x0,y0,z0]、第2関節JT2の位置ベクトル[x1,y1,z1]、第3関節JT3の位置ベクトル[x3,y3,z3]を、それぞれ“xyz0”、“xyz1”、“xyz3”と表し、第i関節JTi(第i回転軸Ai)の関節座標系から見た第j関節JTj(第j回転軸Aj)の関節座標系を、同次変換行列(座標変換行列)である「」を用いて表したとき、次式が成り立つ。なお、同次変換行列とは、位置ベクトルとオイラー角を用いた回転行列とを組み合わせた行列であり、ロボットの運動学の定式化において広く用いられている行列のことである。
【0065】
xyz1=・xyz3 ・・・(6−1)
xyz0=・xyz3
・xyz1 ・・・(6−2)
式(6−2)の両辺に(−1を左から掛けるとすると、次式が成り立つ。
【0066】
−1・xyz0=xyz1 ・・・(7)
また、式(7)により、第2関節JT2の位置ベクトルの各要素であるx1、y1、z1についてそれぞれ次式の関係が得られる。なお、次式の中で、siは第i関節の関節角θに応じたsin(θ)を表しており、ciは第i関節の関節角θに応じたcos(θ)を表している。
【0067】
x1=c1・x0+s1・y0 ・・・(8−1)
y1=−s1・x0+c1・y0 ・・・(8−2)
z1=z0−L0 ・・・(8−3)
ここで、第1関節JT1の関節座標系を基準とした場合、基準座標系の原点Oから手首装置10の位置に見立てた第3関節JT3から延設される第4関節JT4の関節座標系の原点までの距離Rh及び距離Zhについては、式(8−1)〜式(8−3)で表されたx1、y1、z1を用いて、次式の関係が成立する。
【0068】
Rh=x1+y1+z1=x0+y0+(z0−L0) ・・・(9−1)
Zh=z0−L0 ・・・(9−2)
一方、第2関節JT2の位置ベクトルの各要素であるx1、y1、z1については、式(8−1)〜式(8−3)とは別に、式(6−1)により、それぞれ次式の関係が得られる。
【0069】
x1=−s3・s7・x3−c3・s7・y3−c7・z3 ・・・(10−1)
y1=(c2・s3・c7+s2・c3)・x3+(c2・c3・c7−s2・s3)・y3−c2・s7・z3+L1+L2・s2 ・・・(10−2)
z1=(−s2・s3・c7+c2・c3 )・x3−(s2・c3・c7+c2・s3)・y3+s2・s7・z3+L2・c2 ・・・(10−3)
これらを用いると、式(9−1)におけるRhは次式のとおり表すことができる。
【0070】
Rh=x1+y1+z1
=2・L1・[(c3・x3−s3・y3+L2)・s2−{−c7・(s3・x3+c3・y3)+s7・z3}・c2]+2・L2・c3・x3−2・L2・s3・y3+L1+L2+x3+y3+z3・・・(11−1)
また、Zhは、z1を変形して次式のとおり表すことができる。
【0071】
Zh=(c3・x3−s3・y3+L2)・c2+{−c7・(s3・x3+c3・y3)+s7・z3}・c2 ]・s2 ・・・(11−2)
ここで、
F1=c3・x3−s3・y3+L2 ・・・(12−1)
F2=−c7・(s3・x3+c3・y3)+s7・z3 ・・・(12−2)
F3=2・L2・c3・x3‐2・L2・s3・y3+L1+L2+x3+y3+z3 ・・・(12−3)
とおくと、式(11−1)及び式(11−2)については、それぞれ次式のとおり変形することができる。
【0072】
(Rh−F3)/(2・L1)=F1・s2−F2・c2 ・・・(13−1)
Zh=F1・c2+F2・s2 ・・・ (13−2)
ここで、式(13−1)及び式(13−2)それぞれの辺々を2乗して、それぞれの和をとると、次式が成立する。
【0073】
{(Rh−F3)/(2・L1)}+Zh=F1+F2 ・・・(14)
そして、式(14)に対し、式(11−1)、式(11−2)、式(12−1)〜式(12−3)を代入し、s3、c3について整理すると、次式が成立することとなる。
【0074】
A・c3+B・s3+C・s3・c3+D・c3+E・s3+F=0 ・・・(15)
なお、式(15)中のA、B、C、D、E、Fは以下の通りとなる。
【0075】
A=4・L1・(x3+y3・c7)−4・L2・x3・・・(16−1)
B=4・L1・(y3+x3・c7)−4・L2・y3・・・(16−2)
C=4・L1・(−2・x3・y3+2・x3・y3・c7)+8・L2・x3・y3 ・・・(16−3)
D=4・L1・(2・x3・L2−2・y3・z3・s7・c7)−4・L2・x3・K ・・・(16−4)
E=4・L1・(−2・y3・L2−2・x3・z3・s7・c7)+4・L2・y3・K ・・・(16−5)
F=4・L1・(L2+z3・s7−Zh)−K・・・(16−6)
なお、式(16−1)〜式(16−6)中において、L1は上記の第1リンク長を表しており、L2は上記の第2リンク長を表している。また、Kは次式により得られる値である。
【0076】
K=L1+L2+x3+y3+z3‐Rh・・・(17)
式(16−1)〜式(16−6)の各値は、s1,c1,s2,c2に無関係な値であり、各関節角の情報がなくても求めることができる。
【0077】
次に、t=tan(θ3)とおくと、第3関節JT3の関節角θ3に関するc3(余弦)及びs3(正弦)について次式が成立する。
【0078】
c3=2・t/(1+t)・・・(18−1)
s3=(1−t)/(1+t)・・・(18−2)
ここで、式(18−1)、式(18−2)を式(15)に代入し、変数t(=tan(θ3))の次数毎に項を整理すると、次式が成立する。
【0079】
(B−E+F)・t+2(−C+D)・t+(2A−B+F)・t+2(C+D )・t+(B+E+F)=0 ・・・(19)
以上のとおり、式(19)により表される4次方程式を解くことで変数tを求め、θ3=atan(t)を演算することにより、関節角θ3を得ることができる。
【0080】
一方、関節角θ2については、次のように求めることができる。まず、式(19)により求められた関節角θ3を、式(12−1)、式(12−2)にそれぞれ代入すると、F1,F2が求められる。ここで、Zhは既知であるので、式(13−2)より、関節角θ2は次式により求められる。なお、次式の演算結果としては、式(13−1)、式(13−2)を満たすものを選択することとする。
【0081】
θ2=atan2(F2,F1)±atan2((F2+F1−Zh0.5,Zh)・・・(20)
また、関節角θについては、次のように求めることができる。まず、式(8−1)〜(8−3)と式(10−1)〜(10−3)とを用いてx1を消去すると、次式が成立する。
【0082】
c1・x0+s1・y0=−s3・s7・x3−c3・s7・y3−c7・z3 ・・・(21)
ここで、式(21)の右辺をQとおき、式(21)の両辺に式(19)により求められた関節角θ3を代入することで、θ1は次式により求められる。なお、次式の演算結果としては、式(8−1)〜式(8−3)を満たすものを選択することとする。
【0083】
θ1=atan2(y0,x0)±atan2((y0+x0−Q0.5 , Q)・・・(22)
以上のようにして、関節角θ1、θ2、θ3に関して、式(19)、式(21)、式(22)のとおり、7軸多関節ロボット100の逆変換式が定式化される。なお、この逆変換式の定式化は予め行われ、この定式化された逆変換式が制御プログラムに組み込まれている。
[4つの第1求解演算式と4つの形態との対応付け]
つぎに、式(19)の4次方程式の4つの解を求めるための4つの第1求解演算式と7軸多関節ロボット100の4つの形態との対応付けについて説明する。
【0084】
まず、式(19)により表される4次方程式の各係数を整理して次式に変換する。
【0085】
+at+bt+ct+d=0 ・・・(23)
また、
p=−3a/8+b ・・・(24−1)
q=a/8−ab/2+c ・・・(24−2)
r=−3a/256+ab/16−ac/4+d ・・・(24−3)
とおく。ここで、4次方程式の解法としてよく知られた「フェラーリの解法」に基づいて、式(23)の4次方程式の分解方程式である変数yについての3次方程式を次式のとおり定式化する。
【0086】
8y−4py−8ry+4pr−q=0 ・・・(25)
なお、式(25)の3次方程式の各係数を整理して次式に変換する。
【0087】
+fx+gx+h=0 ・・・(26)
ここで、式(26)式の判別式Dは、次式の通り表される。
【0088】
D=q+p ・・・(27)
なお、p及びqは次式の通りである。
【0089】
p=(g−f/3)/3 ・・・(28−1)
q=(h−g・f/3+2・f/27)/2 ・・・(28−2)
また、式(25)の3次方程式の解は、式(27)の判別式Dの解に基づいた3つの条件C1、C2、C3毎に分別される。
【0090】
条件C1(D<0の時):実数解3つ
条件C2(D=0の時):実数の重解と他の実数解又は実数の3重解
条件C3(D>0の時):実数解1つと虚数解2つ(共役複素数)
ここで、条件C2又は条件C3の場合には、負の√演算の必要がない「カルダノの解法」に従って、式(25)の3次方程式の解を求めることとする。なお、カルダノの解法とは3次方程式の代表的な解法である。具体的には、まず、
W1=(−1+30.5・i)/2 ・・・(29−1)
W2=W1・・・(29−2)
U1=−q+D0.5 ・・・(29−3)
U2=−q−D0.5 ・・・(29−4)
とおくと、カルダノの解法における式(25)の3次方程式の3つの解u1、u2、u3は、次式により求められる。
【0091】
u1=1・U1(1/3)+1・U2(1/3)−a/3 ・・・(30−1)
u2=W1・U1(1/3)+W2・U2(1/3)−a/3 ・・・(30−2)
u3=W2・U1(1/3)+W1・U2(1/3)−a/3 ・・・(30−3)
なお、式(30−1)〜式(30−3)中のU1(1/3)及びU2(1/3)は3つの値が考えられるが、実数の値であるものを用いることとする。つまり、U1又はU2が負の場合には、これらの絶対値の3乗根を求めた上で、それに−1をかけて算定することで、虚数の算定を避けることとする。また、条件C2又はC3の場合には、3つの解(u1、u2、u3)のうち、実数解となる解u1のみを演算することとする。なお、条件C2又はC3の場合において実数解u1を求めるための式(30−1)は、本発明に係る「第2求解演算式」に対応する。
【0092】
次に、条件C1の場合には、「ビエタの解法」により式(25)の3次方程式の解を求めることとする。なお、ビエタの解法とは三角関数の三倍角の公式を利用したカルダノの解法とは異なる3次方程式の既知の解法である。具体的には、式(28−1)及び式(28−2)を用いると、次式が成立する。なお、次式の中のΦは、同次変換行列を定義する場合に用いたオイラー角の一つを表している。
【0093】
cos3Φ=−q/{(−p)(1/2) ・・・(31)
また、式(31)により次式が成立する。
【0094】
Φ=arccos[‐q/{(‐p)(1/2)]/3 ・・・(32)
なお、条件C1のときには式(27)の判別式D<0であるので、「p<0」となり、式(32)の右辺の平方根の中身は正の数となる。よって、負の√演算が行われることはない。ビエタの解法における式(25)の3次方程式の3つの解u1,u2,u3は、次式により求められる。
【0095】
u1=2(−p)0.5 ・cosΦ−a/3 ・・・(33−1)
u2=2(−p)0.5 ・cos(Φ+2π/3)−a/3 ・・・(33−2)
u3=2(−p)0.5 ・cos(Φ+4π/3)−a/3 ・・・(33−3)
この場合、解u1,u2,u3は全て実数解となるが、無条件にどれでも採用していいわけではなく、たとえ条件C2又はC3になっても実数解となるものを選択する必要がある。そこで、条件C2又はC3のときには共役複素数(虚数)となる2つの実数解は絶対値が同一でかつ符号(±)が異なるという特徴を利用して、条件C1の場合には、3つの解u1,u2,u3のうち絶対値が同一かつ符号が異なる2つの実数解u2,u3以外の残りの1つの実数解u1のみを特定して演算することとする。なお、条件C1の場合において実数解u1を求めるための式(33−1)は、本発明に係る「第3求解演算式」に対応する。
【0096】
そして、以上のように「カルダノの解法」又は「ビエタの解法」により演算された式(25)の3次方程式の1つの実数解をuと表す。さらに、M1、M2、N1、N2を次式のとおり定義する。
【0097】
M1=−(2u−p)0.5 ・・・(34−1)
M2=(2u−p)0.5 ・・・(34−2)
N1=(2u−p)0.5・q/2(2u−p)+u ・・・(34−3)
N2=−(2u−p)0.5・q/2(2u−p)+u ・・・(34−4)
このとき、式(20)の4次方程式の4つの解は次式の第1求解演算式により求められる。
【0098】
t1=(−M1−(M1−4・N1)0.5)/2−a/4 ・・・(35−1)
t2=(−M1+(M1−4・N1)0.5)/2−a/4 ・・・(35−2)
t3=(−M2−(M2−4・N2)0.5)/2−a/4 ・・・(35−3)
t4=(−M2+(M2−4・N2)0.5)/2−a/4 ・・・(35−4)
ここで、4つの解t1〜t4を求めるための4つの第1求解演算式(式(35−1)〜式(35−4))を、図6に示したようなロボットの4つの形態と対応付けることとする。なお、4つの解t1〜t4を求めるための4つの第1求解演算式(式(35−1)〜式(35−4))は、式(25)の3次方程式の3つの解u1、u2、u3のうち実数解u1のみが使用されているので、4つの解t1〜t4の組合せは一義的に求められることとなる。つまり、解u1〜u3がランダムに選択されるということがなく、常に同一の実数解u1のみに基づいて4つの第1求解演算式(式(35−1)〜式(35−4))の演算が行われて4つの解t1〜t4が求められるので、7軸多関節ロボット100の形態の急激な変化を抑えることができる。
[形態に応じた4次方程式の解(t1〜t4のいずれか1つ)の特定]
図3は、4つの第1求解演算式(式(35−1)〜式(35−4))のうち1つを特定するための処理の流れを示したフローチャートである。
【0099】
まず、7軸多関節ロボット100及びロボット制御装置200の電源をオンしたとき(ステップS301)、ロボット制御装置200の演算器210は、第1乃至第7関節JT1〜JT7に設けられている位置検出器D1〜D7により関節角θ1〜θ7を取得する。そして、演算器210は、取得した関節角θ1〜θ7を順変換処理することにより、7軸多関節ロボット100のロボットアームの電源オン時の先端位置(手首装置10の位置)を算定する(ステップS302)。
【0100】
つぎに、演算器210は、算定したロボットアームの先端位置に基づいて上述した逆変換処理を行う。具体的には、まず、式(25)の3次方程式について、条件C1の場合にはビエタの解法に従って実数解u1のみを算定し、条件C2、C3の場合にはカルダノの解法に従って実数解u1のみを算定する。
【0101】
つぎに、演算器210は、式(20)の4次方程式について、算定した式(25)の3次方程式の実数解u1のみを使用して、4つの第1求解演算式(式(35−1)〜式(35−4))を演算することにより4つの解t1〜t4をそれぞれ算定する(ステップS303)。また、これらの算定した4つの解t1〜t4を用いて、それぞれに対応する関節角θ3を算定する(ステップS304)。
【0102】
そして、演算器210は、ステップS304において算定された4つの関節角θ3の中で、位置検出器D3により取得した関節角θ3に最も近い関節角θ3を特定するともに、この特定した関節角θ3を算定するときに用いられた、4つの解t1〜t4のうちの1つを特定する。なお、この1つの解を特定するのに、関節角θ3に代えて、関節角θ1又は関節角θ2を用いてもよい。さらに、この特定した1つの解t1〜t4を求めるための1つの第1求解演算式(式(35−1)〜式(35−4))を記憶器220に記憶する(ステップS305)。この結果、記憶器220に記憶された1つの第1求解演算式(式(35−1)〜式(35−4))が、電源オン後の逆変換処理において用い続けられる。
【0103】
図4は、記憶器220に記憶された4つの第1求解演算式(式(35−1)〜式(35−4))のうちいずれか1つを用いて実行される逆変換処理の流れを示すフローチャートである。なお、図3に示される電源オン時の処理によって4次方程式の解t1を求めるための第1求解演算式(35−1)のみが記憶器220に記憶されているものとする。
【0104】
まず、演算器210は、外部装置からツール部材11の目標位置を取得すると(ステップS401)、この取得した目標位置を用いて式(25)の3次方程式の3つの解(u1〜u3)のうち実数解u1のみを算定する(ステップS402)。
【0105】
つぎに、演算器210は、算定した実数解u1を使用して記憶器220に記憶された式(20)の4次方程式の解t1に関する第1求解演算式(35−1)を演算する。これにより、式(20)の4次方程式の解t1が算定される(ステップS403)。
【0106】
そして、算定した解t1に対応する関節角θ3を算定する(ステップS404)。なお、算定した関節角θ3を用いて、式(22)により関節角θ1が算定され、式(21)により関節角θ2が算定される(ステップS405)。
【0107】
以上のとおり、式(20)の4次方程式の4つの解t1〜t4を求めるための4つの第1求解演算式(式(35−1)〜(35−4))と、4つの解t1〜t4に応じてとり得る4つの形態1〜4とを予め対応付けておき、電源オン時の形態に基づいて4つの第1求解演算式(式(35−1)〜(35−4))のうちいずれか1つを、電源オン後の逆変換処理において使用する。この結果、7軸多関節ロボット100の形態の急激な変化を抑えることが可能となる。
【0108】
さらに、電源オン時の7軸多関節ロボット100の初期形態を特定するために、4つの第1求解演算式(式(35−1)〜(35−4))についてそれぞれ1回限り演算すればよく、電源オンより後の逆変換処理においては特定された1つの第1求解演算式以外の残りの3つの第1求解演算式については演算しなくても済むので、逆変換処理に要する演算量を抑えることができ、7軸多関節ロボット100の制御の高速化が図られることとなる。
【0109】
また、式(20)の4次方程式を解くためには式(25)の3次方程式を解くことになるが、当該3次方程式である以上、3つの解u1〜u3が生じてしまう。よって、この3つの解u1〜u3のうちいずれか1つを予め選定しておけば、4次方程式の4つの解t1〜t4の組合せについてのばらつきを抑えることができる。
【0110】
さらに、電源オン時に4次方程式を解くために3次方程式を解く際に、カルダノの解法とビエタの解法とを使い分けて複素数演算をしなくて済むようにしたので、演算量を抑えることができ、ロボットシステムへの実装が容易なものとなる。
【0111】
上記説明から、当業者にとっては、本発明の多くの改良や他の実施の形態が明らかである。従って、上記説明は、例示としてのみ解釈されるべきであり、本発明を実行する最良の態様を当業者に教示する目的で提供されたものである。本発明の精神を逸脱することなく、その構造及び/又は機能の詳細を実質的に変更できる。
【産業上の利用可能性】
【0112】
本発明は、7軸多関節ロボットの逆変換処理にとって有益である。
【符号の説明】
【0113】
2 基台
3 旋回台
4〜8 アーム部材
9 アタッチメント
10 手首装置
11 ツール部材
JT1〜JT7 第1乃至第7関節
A1〜A7 第1乃至第7回転軸
M1〜M7 サーボモータ
D1〜D7 位置検出器
L0〜L5 第1乃至第6リンク長
100 7軸多関節ロボット
200 ロボット制御装置
210 演算器
220 記憶器


【特許請求の範囲】
【請求項1】
先端に設けられた手首と基端から当該手首に向かって順に設けられた7つの関節とを具備し、前記7つの関節が回転軸をそれぞれ有しかつそれぞれの回転軸の周りに次の関節を回転させるように構成された7軸多関節ロボットの制御方法であって、
前記7つの回転軸のうちのいずれか1つを冗長軸に、残りの回転軸のうちの3つを基軸に、かつ当該3つの基軸のうちのいずれか1つを変数軸に定め、かつ、前記基端から前記手首までの直線距離と前記基端に最も近い前記回転軸の延在方向における前記基端から前記手首までの距離とに基づく手首の位置と前記変数軸を有した関節の関節角とに関して定式化された4次方程式を解いて前記手首の位置を前記3つの基軸を有した各関節の関節角に逆変換するステップを含み、
前記4次方程式は、その4つの解にそれぞれ対応する4つの第1求解演算式を用いて解くことが可能なものであり、かつ、前記7軸多関節ロボットが採り得る形態は、前記4つの解ひいては前記4つの第1求解演算式に対応して定まるものであり、
電源オン時に、当該電源オン時における前記7軸多関節ロボットの初期形態に基づいて、前記4つの第1求解演算式のうちいずれか1つを特定して記憶し、
前記電源オンの後、前記記憶した1つの第1求解演算式を用いて前記逆変換するステップを遂行して前記手首の目標位置から前記3つの基軸を有した各関節の関節角を算定し、それにより、前記7軸多関節ロボットの動作を制御する、7軸多関節ロボットの制御方法。
【請求項2】
前記電源オン時に、前記4つの第1求解演算式を用いて前記4次方程式を解いて前記4つの解を求め、当該4つの解それぞれについて当該電源オン時における前記手首の位置を前記3つの基軸を有した各関節の関節角の少なくともいずれか1つに逆変換し、当該1つの基軸を有した関節の関節角と前記電源オン時の前記7軸多関節ロボットの初期形態に対応する前記3つの基軸のうちの1つを有した関節の関節角とを比較することにより、前記4次方程式の4つの第1求解演算式のうちいずれか1つを特定して記憶する、請求項1に記載の7軸多関節ロボットの制御方法。
【請求項3】
全ての互いに隣り合う前記関節の回転軸が互いに垂直であり、
前記基端から前記手首に向かって順に設けられた7つの関節を、それぞれ、第1関節、第2関節、第7関節、第3関節、第4関節、第5関節、及び第6関節と定義した場合、前記冗長軸は前記第7関節の回転軸であり、前記3つの基軸は前記第1関節の回転軸、前記第2関節の回転軸、及び前記第3関節の回転軸であり、かつ前記変数軸は前記第3関節の回転軸である、請求項1に記載の7軸多関節ロボットの制御方法。
【請求項4】
前記4つの第1求解演算式を用いて前記4次方程式を解く際に、フェラーリの解法に基づいた前記4次方程式を解くための分解方程式として定式化された3次方程式の3つの解に含まれる1つの実数解を求め、かつ当該求めた前記3次方程式の1つの実数解を用いて前記4つの第1求解演算式を演算する、請求項1又は3に記載の7軸多関節ロボットの制御方法。
【請求項5】
前記3次方程式の3つの解に含まれる1つの実数解を求める際に、前記3次方程式の判別式が0又は正の場合には、カルダノの解法により求まる前記3次方程式の1つの実数解と2つの虚数解のうち当該1つの実数解に対応した当該カルダノの解法に基づく第2求解演算式を使用し、前記3次方程式の判別式が負の場合には、ビエタの解法により求まる前記3次方程式の3つの実数解のうち絶対値が同一かつ符号の異なる2つの実数解以外の1つの実数解に対応した当該ビエタの解法に基づく第3求解演算式を使用する、請求項4に記載の7軸多関節ロボットの制御方法。
【請求項6】
先端に設けられた手首と基端から当該手首に向かって順に設けられた7つの関節とを具備し、前記7つの関節が回転軸をそれぞれ有しかつそれぞれの回転軸の周りに次の関節を回転させるように構成された7軸多関節ロボットの制御方法をコンピュータに遂行させる、7軸多関節ロボットの制御プログラムであって、
前記制御方法は、
前記7つの回転軸のうちのいずれか1つを冗長軸に、残りの回転軸のうちの3つを基軸に、かつ当該3つの基軸のうちのいずれか1つを変数軸に定め、かつ、前記基端から前記手首までの直線距離と前記基端に最も近い前記回転軸の延在方向における前記基端から前記手首までの距離とに基づく手首の位置と前記変数軸を有した関節の関節角とに関して定式化された4次方程式を解いて前記手首の位置を前記3つの基軸を有した各関節の関節角に逆変換するステップを含み、
前記4次方程式は、その4つの解にそれぞれ対応する4つの第1求解演算式を用いて解くことが可能なものであり、かつ、前記7軸多関節ロボットが採り得る形態は、前記4つの解ひいては前記4つの第1求解演算式に対応して定まるものであり、
電源オン時に、当該電源オン時における前記7軸多関節ロボットの初期形態に基づいて、前記4つの第1求解演算式のうちいずれか1つを特定して記憶し、
前記電源オンの後、前記記憶した1つの第1求解演算式を用いて前記逆変換するステップを遂行して前記手首の目標位置から前記3つの基軸を有した各関節の関節角を算定し、それにより、前記7軸多関節ロボットの動作を制御する、7軸多関節ロボットの制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−131362(P2011−131362A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2009−295252(P2009−295252)
【出願日】平成21年12月25日(2009.12.25)
【出願人】(000000974)川崎重工業株式会社 (1,710)
【Fターム(参考)】