(58)【調査した分野】(Int.Cl.,DB名)
関節によって相対回転可能に互いに直列に連結された複数のアームより構成されるロボットハンドの誤差検出方法であって、前記各アームを単独で回転させた際のロボットハンド先端の先端位置ベクトルをそれぞれ三点測定して、これら測定された先端位置ベクトルに基づいて前記各アームの回転時における回転軸ベクトルと回転面の中心ベクトルをそれぞれ算出するステップと、前記回転軸ベクトルおよび前記中心ベクトルより前記各関節の関節位置ベクトルと前記各アームのアーム長ベクトルを算出するステップと、算出された前記関節位置ベクトルと予め記憶されたマスタ関節位置ベクトルの差である関節位置誤差ベクトルを算出するステップと、前記関節位置誤差ベクトル、前記回転軸ベクトルおよびアーム長ベクトルより、各アームの角度と予め記憶されたマスタ角度との誤差角度を算出するステップとを具備するロボットハンドの誤差検出方法。
前記誤差角度を使用して前記関節位置ベクトル、前記アーム長ベクトル、前記関節位置誤差ベクトルの少なくとも一つを補償するステップをさらに備える請求項1に記載のロボットハンドの誤差検出方法。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、上記従来の誤差検出方法では、各関節のアームの角度ずれ(誤差角度)の絶対値を検出することができないという問題があった。
【0005】
そこで、本発明はこのような課題を解決するもので、ロボットハンドを構成する各関節におけるアームの角度ずれ(誤差角度)の絶対値を検出することが可能なロボットハンドの誤差検出方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本第1発明は、関節(P1〜P6)によって相対回転可能に互いに直列に連結された複数のアーム(L1〜L6)より構成されるロボットハンド(1)の誤差検出方法であって、前記各アーム(L1〜L6)を単独で回転させた際のロボットハンド先端(P7)の先端位置ベクトルをそれぞれ三点測定して、これら測定された先端位置ベクトル(P7An*,P7Bn*,P7Cn*)に基づいて前記各アーム(L1〜L6)の回転時における回転軸ベクトル(kn*)と回転面の中心ベクトル(On*)をそれぞれ算出するステップと、前記回転軸ベクトル(kn*)および前記中心ベクトル(On*)より前記各関節(P1〜P6)の関節位置ベクトル(Pn*)と前記各アーム(L1〜L6)のアーム長ベクトル(Ln*)を算出するステップと、算出された前記関節位置ベクトルと予め記憶されたマスタ関節位置ベクトルの差である関節位置誤差ベクトル(ΔPn*)を算出するステップと、前記関節位置誤差ベクトル(ΔPn*)、前記回転軸ベクトル(kn*)およびアーム長ベクトル(Ln*)より、各アーム(L1〜L6)の角度と予め記憶されたマスタ角度との誤差角度(Δθn)を算出するステップとを具備する。
【0007】
本第1発明によれば、ロボットハンドを構成する各関節のアームの角度ずれ(誤差角度)の絶対値を正確に検出することができる。
【0008】
本第2発明では、前記誤差角度(Δθn)を使用して前記関節位置ベクトル(Pn*)、前記アーム長ベクトル(Ln*)、前記関節位置誤差ベクトル(ΔPn*)の少なくとも一つを補償するステップをさらに備える。
【0009】
本第2発明によれば、各関節のアームの誤差角度に基づいて、関節位置ベクトル、アーム長ベクトル、関節位置誤差ベクトルの少なくとも一つを良好に補償することができる。
【発明の効果】
【0010】
以上のように、本発明のロボットハンドの誤差検出方法によれば、ロボットハンドを構成する各関節におけるアームの角度ずれ(誤差角度)の絶対値を精度良く検出することができる。
【発明を実施するための形態】
【0012】
なお、以下に説明する実施形態はあくまで一例であり、本発明の要旨を逸脱しない範囲で当業者が行う種々の設計的改良も本発明の範囲に含まれる。
【0013】
図1は本発明を実施する装置の構成を示すもので、多関節ロボットハンド1の先端に装着された測定用治具2を、カメラ3で撮像する。カメラ3はコンピュータ4に接続されており、コンピュータ4のプログラムによって、以下に説明する誤差検出および誤差補償の手順が実行される。コンピュータ4はカメラ3を介し、必要に応じて、固定された基準点St(基準座標系の原点となる)を撮像して3次元認識の精度を維持する。
【0014】
図2には多関節ロボットハンド1の一例を概念的に示す。ロボットハンド1の各関節P1〜P6は地上側から6箇所にあり、P7はロボットハンド1の先端である。各関節P1〜P6および先端P7(測定用治具の先端)はアームL1〜L6で連結されており、本実施形態では、P1は固定関節、P2,P3,P5はそれぞれアームL2,L3,L5を旋回回転させる関節、P4,P6はそれぞれアームL4,L6をその軸周りに回転させる関節となっている。
【0015】
(旋回回転する関節の誤差検出)
最初に各関節Pn(n=2〜6)をそれぞれ回転させて、その時の、先端P7の軌跡のうちから3点のベクトル座標P7An*,P7Bn*,P7Cn*を得る。なお、以下、*印を付した記号はベクトルであることを示す。続いて下式(1)〜(3)で示される3点G1(n)*,G2(n)*,G3(n)*を通る旋回軌跡の回転半径dnを算出する。回転半径dnは旋回回転する関節Pn(n=2,3,5)についてのみ算出することができる。また、下式(1)〜(3)においてm>nである。
【0017】
上記回転半径dnの算出は以下の手順で行う。
最初に上記3点G1(n)*,G2(n)*,G3(n)*を通る回転軌跡が存在する回転面の、中心ベクトルOn*を以下のように計算する。
【0018】
図3に示すように、上記3点G1(n)*,G2(n)*,G3(n)*(図中は(n)を省略している)が含まれる平面(平面座標系)の原点をG1(n)*とし、点G1(n)*,G2(n)*間のベクトルをV1*、点G1(n)*,G3(n)*間のベクトルをV2*とすると、平面座標系の単位ベクトルi*,j*,k*は下式(4)〜(6)で求められる。ここでk*は上記平面に垂直な、回転軸の向きを示す単位方向ベクトルである。
【0020】
点G1(n)*の、基準座標系での座標値を(X1,Y1,Z1)とし、単位ベクトルi*,j*,k*の各座標値をそれぞれ(ix,iy,iz)(jx,jy,jz)(kx,ky,kz)とすると、変換行列Tpは下式(7)のようになる。
【0022】
これにより、点G2(n)*,G3(n)*は下式(8),(9)によって平面座標系上の点G2(n)*´,G3(n)*´に変換される(
図3)。
【0024】
上記3点G1(n)*´, G2(n)*´, G3(n)*´,を通る円(旋回軌跡)の平面座標系上での中心On*´の座標(uc,vc,0)は
図4に示す幾何学的位置関係より、下式(10)のようなものとなる。
【0026】
なお、中心On*´から各点G1(n)*´,G2(n)*´,G3(n)*´へのベクトルを、
図5に示す(図中は(n)を省略している)ようにそれぞれVcG1*´,VcG2*´,VcG*3´とすると、点G1(n)*´,G2(n)*´間の角度θ12、およびG2(n)*´,G3(n)*´間の角度θ23は下式(11),(12)で表される。
【0028】
平面座標系上で位置が特定された中心On*´は下式(13)によって基準座標系上の中心On*に変換される。
On*=Tp・On*´…(13)
これにより、回転半径dnがdn=|G1*−On*|で算出される。
【0029】
続いて、各アームL2,L3,L5のアーム長Ln(n=2,3,5)を、各アームのその回転軸に対する設計上の角度φn(φn≠0)と上記回転半径dnより、下式(14)で算出する。
Ln=dn/sinφn…(14)
なお、φn=0の場合のLn(n=4,6)は予め測定しておく。
【0030】
その後、各関節の位置ベクトルPn*(n=1〜6)および各アームの長さベクトルLn*を下式(15),(16)によって算出する。
【0032】
上式(15)中のkn*は関節Pnの回転軸の単位方向ベクトルである。また上式(15),(16)の算出はn=6→1の順で行う。
ロボットハンド1の設置初期等に上記手順で算出されたPn*、Ln*の値はマスタ値として予めコンピュータ4内に記憶される。
【0033】
ロボットハンド1を使用している過程で、上記と同様の手順で各関節P1〜P6の位置ベクトルPn*(n=1〜6)が算出され、位置ベクトルPn*の上記マスタ値との誤差ΔPn*が算出される。そして、下式(17),(18)によって各関節Pn(n=1〜3)について、その回転軸の、マスタ角度との誤差(ずれ)角度Δθnが検出(算出)される。検出された誤差角度Δθnが所定値よりも大きい場合には、ロボットハンド1の異常として該当する関節Pn(n=1〜6)を報知する。検出された誤差角度Δθnが所定値よりも小さい場合には、後述する誤差補償が行なわれる。
【0035】
ここで、上式(17)中、ΔPmn*は、n番目の関節Pnの、位置誤差の影響を受けたm番目の関節Pmの位置誤差ベクトルを示す。また、m>n≧1である。
【0036】
(誤差補償)
次に、n=1〜3の各Ln*,kn*,Pn*,ΔPn*について、Δθnの影響を取り除く(誤差補償)。これは下式(19)で示される回転行列Rot(k*,θ)を使用して以下のように行われる。
Rot(k*,θ)=cosθ・I3+(1−cosθ)k*・tk*+sinθ[k*×]…(19)
ここで、I3は3次の単位行列、tk*は単位ベクトルk*の転置ベクトル、[k*×]は単位ベクトルk*の外積行列である。
【0037】
すなわち、誤差補償後のLn*,kn*,Pn*,ΔPn*をそれぞれLm*´,km*´,Pm*´,ΔPm*´とすると、これらは下式(20)〜(23)を使用して算出(補償)できる。
Lm*´=Rot(kn*,−Δθn) Lm*…(20)
km*´=Rot(kn*,−Δθn) km*…(21)
Pm*´=Rot(kn*,−Δθn) (Pm*−Pn*)+Pn*…(22)
ΔPm*´=Rot(kn*,−Δθn)ΔPm*…(23)
【0038】
(軸回りに回転する関節の誤差検出・補償)
上式(20)〜(23)を使用するに際して、Pn(n=4,6)の関節はそれぞれアームLn(n=4,6)をその軸周りに回転させるものであり、これら関節Pn(n=4,6)では回転軸とアームが平行であるから、上式(18)における|kn*×Ln*|=0となってΔθnが算出できない。
【0039】
そこでこの場合、
図6で、|P5*−P4*|はアームL4の回転で変化せず、また|O6*−P5*|がアームL6の回転で変化しないこと、およびO6*にはΔθn(n=1〜3)の影響がないので|O6*−P4*|にはΔθ5以外のΔθnの影響がないこと、を考慮すると、
図6に示す幾何学的な関係からΔθ5は下式(24)で算出される。
【数9】
【0040】
算出(検出)されたΔθ5により上式(20)〜(23)によってL5*,k5*,P5*,ΔP5*の誤差補償が行われ、あるいは当該関節P6の異常が報知される。
【0041】
次にΔθ4を算出(検出)する。O6*にはΔθ4以外のΔθnの影響は無いから、下式(25)によってΔθ4が算出され、上式(20)〜(23)によってL4*,k4*,P4*,ΔP4*の誤差補償が行われ、あるいは当該関節P4の異常が報知される。
|ΔO6*|
2=2|R4*×(O6*−P4*)|
2(1−cosΔθ4)…(25)
【0042】
Δθ6については、P7*とO6*が重ならないように測定治具を予め調節しておく(
図6参照)ことによって、上式(1)〜(18)によってΔθ6が算出(検出)され、その後、上式(20)〜(23)によってL6*,k6*,P6*,ΔP6*の誤差補償が行われ、あるいは当該関節P4の異常が報知される。
【符号の説明】
【0043】
1…ロボットハンド、2…測定用治具、3…カメラ、4…コンピュータ、P1,P2,P3,P4,P5,P6…関節、L1,L2,L3,L4,L5,L6…アーム。