の複数の回転角度で、ロボット10の手先と、基準位置に配置されている反射鏡との距離、又はロボットの手先の3次元位置を測定し、測定した距離又は3次元位置に基づいて、回転軸J
【発明の概要】
【発明が解決しようとする課題】
【0005】
非特許文献1の測定方法では、レーザトラッカを用いてロボットの手先の3次元位置を測定する。具体的には、基準位置にレーザトラッカを配置し、ロボットの手先に取り付けられたレトロレフレクタ(反射鏡)を追尾させる。これにより、レーザトラッカから出射され、レトロレフレクタで反射されたレーザ光の向きと、レーザトラッカからレトロレフレクタまでの距離とに基づいてレトロレフレクタの位置、すなわち手先の位置を測定する。これにより、ロボットに入力した指令位置と、実際のロボット先端部の位置との誤差を測定する。
【0006】
そして、ロボットに入力した指令位置と、測定した手先の位置とに基づいて、ロボットのリンク長、回転軸の基準角度(ゼロ点)及び回転中心軸の向きの誤差を推定する。しかしながら、非特許文献1の方法では、ロボットを動作させる各回転軸の角度誤差を推定、補正できないため、ロボットの手先位置を精度よく位置決めすることは難しい。
【0007】
本発明は、上述の事情に鑑みてなされたものであり、精度よく、運動精度測定と位置補正とを行うことができるロボットの運動精度測定方法及び位置補正方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、この発明の第1の観点に係るロボットの運動精度測定方法では、
ロボットの回転軸の複数の回転角度で、前記ロボットの手先と、基準位置との距離を測定し、
測定した前記距離に基づいて、前記回転軸の複数の同定角度で角度誤差を算出する。
【0009】
また、前記距離は、
前記ロボットの手先に取り付けられたレーザ干渉計から出射されるレーザ光を、前記基準位置に配置された反射鏡で反射させて計測される、
こととしてもよい。
【0010】
この発明の第2の観点に係るロボットの運動精度測定方法では、
ロボットの回転軸の複数の回転角度で、前記ロボットの手先の3次元位置を測定し、
測定した前記3次元位置に基づいて、前記回転軸の複数の同定角度で角度誤差を算出する。
【0011】
また、前記3次元位置は、
前記ロボットの手先に取り付けられた反射鏡と、基準位置に配置されたレーザトラッカとを用いて計測される、
こととしてもよい。
【0012】
また、前記角度誤差は、
前記回転軸を正方向に回転させた場合の角度誤差と、前記回転軸を逆方向に回転させた場合の角度誤差とを含む、
こととしてもよい。
【0013】
また、前記同定角度は、前記回転軸の可動範囲の両端を含む、
こととしてもよい。
【0014】
この発明の第3の観点に係る位置補正方法では、
第1の観点又は第2の観点に係るロボットの運動精度測定方法により測定された前記角度誤差に基づいて、前記回転軸の回転角度を補正する。
【0015】
また、前記同定角度の前記角度誤差を内挿して、前記同定角度の中間の回転角度を補正する、
こととしてもよい。
【発明の効果】
【0016】
本発明のロボットの運動精度測定方法及び位置補正方法によれば、ロボットの手先と基準位置との距離又は手先の3次元位置に基づいてロボットの回転軸ごとの角度誤差を推定するとともに、推定した角度誤差に基づいてロボットの位置を補正するので、精度よくロボットを動作させることが可能である。
【発明を実施するための形態】
【0018】
以下、図を参照しつつ、本発明の実施の形態に係るロボットの運動精度測定方法及び位置補正方法について説明する。
【0019】
(ロボット及び測定システムの構成)
本実施の形態に係るロボットの運動精度測定方法では、
図1に示すように、垂直多関節型ロボットであるロボット10の運動精度測定を例として説明する。また、本実施の形態の運動精度とは、ロボット10の先端部である手先10aの位置決め誤差をいうものとする。
【0020】
ロボット10は、7つの回転軸J
i(i=1〜7)を備える。各回転軸J
iは、ロボット10の基台側から回転軸J
1、J
2、・・・とし、最も先端側の回転軸を回転軸J
7とする。回転軸J
7は、ロボット10の手先10aを回転させるための関節であるので、手先10aの位置決め精度には影響しない。したがって、以下では回転軸J
1〜J
6に係る位置決め誤差について述べる。
【0021】
ロボット10は、制御ユニット20に接続されている。制御ユニット20は、
図2のブロック図に示すように、制御部21、記憶部22、表示部23、入力部24を備える。
【0022】
制御部21は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、水晶発振器等から構成されており、ロボット10の動作を制御するとともに、ロボット10に取り付けられたレーザ干渉計30のデータに基づいて、ロボット10の運動精度を測定する。制御部21は、制御部21のROM、記憶部22等に記憶されている各種動作プログラム及びデータをRAMに読み込んでCPUを動作させることにより、
図2に示される制御部21の各機能を実現させる。これにより、制御部21は、動作制御部211、測定制御部212及び演算部213として動作する。
【0023】
動作制御部211は、ロボット10の手先10aを指令位置p
n*に移動させるため、各回転軸J
iを制御し、回転させる。
【0024】
測定制御部212は、運動精度測定の際、測定を行う手先10aの位置を動作制御部211へ送信し、ロボット10の各回転軸J
i(i=1〜6)に指令角度θ
i,n*を出力させ、各回転軸J
iを動作させる。これにより、測定制御部212は、手先10aを指令位置p
n*に移動させるとともに、レーザ干渉計30のレーザ光が基準位置に配置されている反射鏡40を向くように、各回転軸J
iの動作を制御する。また、各回転軸J
iの回転角度が指令角度θ
i,n*に達した後、レーザ干渉計30から出射され、反射鏡40で反射された反射光の受光データを、レーザ干渉計30から受信する。
【0025】
演算部213は、レーザ干渉計30から受信した受光データに基づいて、手先10aと反射鏡40との距離d
kを算出する。本実施の形態では、レーザ干渉計30の受光データは、基準距離に対する差分として出力される。この基準距離と差分とに基づいて手先10aと反射鏡40との距離d
kを算出する。また、演算部213は、複数の指令角度θ
i,n*で算出した距離d
kに基づいて、ロボット10の運動精度、すなわち手先10aの位置決め誤差を算出する。
【0026】
記憶部22は、ハードディスク、フラッシュメモリ等の不揮発性メモリであり、レーザ干渉計30の受光データからロボット10の運動精度を算出するアルゴリズム、算出された位置決め誤差等を記憶する。
【0027】
表示部23は、液晶パネル、有機EL(Electroluminescence)等の表示用デバイスであり、指令角度θ
i,n*、演算部213で算出された位置決め誤差等を表示する。本実施の形態に係る表示部23は、
図1に示すように、制御ユニット20に搭載された液晶パネルである。
【0028】
入力部24は、測定開始指示、測定用の設定パラメータ等を入力するための入力デバイスである。入力部24は、タッチパネル、マウス等であり、本実施の形態に係る入力部24は、液晶パネルである表示部23上に配置されたタッチパネルである。
【0029】
また、レーザ干渉計30は、手先10aに取り付けられ、レーザ光を出射するとともに、反射鏡40によるレーザ光の反射光を受け、受光データを測定制御部212へ送信する。
【0030】
反射鏡40は、レーザ干渉計30から入射したレーザ光をレーザ干渉計30へ反射する。反射鏡40は、レーザ干渉計30の位置が変化し、レーザ光の入射角度が変わってもレーザ干渉計30へレーザ光を反射するレトロレフレクタ(retroreflector)であり、例えば、キャッツアイ型のレトロレフレクタである。
【0031】
(ロボットの運動精度測定)
続いて、本実施の形態に係る運動精度測定方法について、
図3のフローチャートを参照しつつ具体的に説明する。
【0032】
運動精度測定が開始されると、測定制御部212は、測定回数を表すカウンタkをリセット(k=1)する(ステップS11)。
【0033】
続いて、測定制御部212は、予め定められた指令位置p
1*=(x
1*,y
1*,z
1*)を動作制御部211へ送信する。動作制御部211は、手先10aを指令位置p
1*へ移動させる(ステップS12)。より具体的には、動作制御部211は、手先10aを指令位置p
1*へ移動させるための、各回転軸J
iの指令角度θ
i,1*を計算し、算出した指令角度θ
i,1*に各回転軸J
iを回転させる。
【0034】
この時、各回転軸J
iの角度は、ロボット10の手先10aの向きが反射鏡40を向くように設定される。より具体的には、長さ1となる手先10aの方向ベクトルをlとした場合、手先10aの向きが、l=(p
k−q
m)/|p
k−q
m|となるように制御される。
【0035】
測定制御部212は、レーザ干渉計30を制御して、基準位置q
m=(x
m*,y
m*,z
m*)に配置されている反射鏡40に向けてレーザ光を出射させる(ステップS13)。この時、実際の手先10aの位置は、p
1=(x
1,y
1,z
1)であり、指令位置p
1*に対する誤差を含んでいる。
【0036】
この誤差は、各回転軸J
iの角度誤差Δθ
i,1として、以下のように表すことができる。
Δθ
i,1=θ
i,1−θ
i,1*
ただし、θ
i,1は回転軸J
iの回転角度、θ
i,1*は回転軸J
iの指令角度である。
【0037】
より詳細には、ロボット10は、モータの回転角度の誤差、歯車やベルトのバックラッシュ等の誤差要因を持っているため、各回転軸J
iの実際の角度θ
iと指令角度θ
i*との間に、誤差Δθ
i=θ
i−θ
i*が生じる。誤差Δθ
iは、指令角度θ
i*によって変動するので、Δθ
i(θ
i*)と表す。さらに、歯車やベルトのバックラッシュ等によって、誤差Δθ
iは、一般的に、指令角度θ
i*へ向かう回転軸J
iの回転方向によって異なる。
【0038】
例えば、回転軸J
iが、指令角度θ
i*へ向かう際、モータが時計回り(以下、正方向という)であった場合の誤差Δθ
i(θ
i*+)と、モータが反時計回り(以下、逆方向という)であった場合の誤差Δθ
i(θ
i*−)とは、異なる値になる。
【0039】
本実施の形態では、各回転軸J
i(i=1〜6)について、n個の指令角度θ
i,n*(n=1〜N
i)を同定角度として設定した場合の誤差Δθ
i,n(θ
i,n*+)、Δθ
i,n(θ
i,n*−)を回転軸J
iの角度誤差として算出することにより、ロボット10の運動精度を測定する。
【0040】
続いて、レーザ干渉計30は、反射鏡40で反射されたレーザ光に基づいて、受光データを測定制御部212へ送信する(ステップS14)。測定制御部212は、受信した受光データを演算部213へ送信する。演算部213は、受信した受光データに基づいて、手先10aと反射鏡40との距離d
1、及び指令位置p
k*と反射鏡40との理論的な距離である理論距離d
1*を算出する(ステップS15)。制御部21は、算出した距離d
1と理論距離d
1*とを記憶部22に記憶させる(ステップS16)。
【0041】
カウンタkが予め定められた測定回数K未満である場合(ステップS17のYES)、カウンタkをインクリメントする(ステップS18)。そして、測定制御部212は、新たな指令位置p
2*=(x
2*,y
2*,z
2*)を動作制御部211に入力し、上記と同様の測定処理(ステップS12〜S15)を行う。制御部21は、算出された距離d
2と理論距離d
2*とを記憶部22へ記憶させる(ステップS16)。
【0042】
カウンタkが予め定められた測定回数K以上である場合(ステップS17のNO)、次の処理に移る。
【0043】
ここで、測定制御部212から出力される指令位置p
k*は、各回転軸J
iの指令角度θ
i,k*が、角度誤差Δθ
i,nを算出する同定角度θ
i,n*で構成されるよう、予め設定されている。また、K回の測定において、各回転軸J
iの全ての同定角度θ
i,n*が含まれる。
【0044】
同定角度θ
i,n*は、各回転軸J
iの可動範囲を広くカバーするように設定されている。本実施の形態に係る各回転軸J
iの可動範囲は、
図4に示すように、−170°〜+170°である。そして、同定角度θ
i,n*は、θ
i,1*=−170°,θ
i,2*=−160°,・・・,θ
i,35*=+170°と設定している。なお、同定角度θ
i,n*の範囲及び刻み幅は、これに限られず、ロボット10の各回転軸の可動範囲、運動精度に対する要求等に応じて適宜設定することができる。
【0045】
また、各回転軸J
iを各同定角度θ
i,n*に回転させる際、各回転軸J
iが正方向に回転される場合と逆方向に回転される場合とが、それぞれ少なくとも1回含まれるように指令位置p
k*は設定されている。
【0046】
距離d
k、理論距離d
k*の測定が終了すると、演算部213は、記憶部22に記憶されているK個の距離d
k、理論距離d
k*に基づいて、各回転軸J
iの角度誤差Δθ
i,nを算出する(ステップS19)。
【0047】
本実施の形態では、K個の測定データに基づいて、各回転軸J
iの角度誤差Δθ
i,nとして、35(点)×2(方向)×6(軸)=420(個)の値を算出する。角度誤差Δθ
i,nが算出されると、運動精度測定は終了する。
【0048】
(角度誤差の算出アルゴリズム)
続いて、上記ステップS19の角度誤差Δθ
i,nの算出アルゴリズムについて説明する。
【0049】
本実施の形態では、ロボット10の運動精度として、各回転軸J
i(i=1〜6)について、所定の指令角度θ
i,n*を入力した場合の指令角度θ
i,n*と実際の角度θ
i,nとの誤差(以下、角度誤差Δθ
i,nという)を算出する。これにより、ロボット10の手先10aの位置決め誤差を推定する。
【0050】
より具体的には、距離d
kの測定が完了した後、演算部213は、記憶部22に記憶されているK個の距離d
k、理論距離d
k*に基づいて、各回転軸J
iのn個(n=1〜N
i)の同定角度における角度誤差Δθ
i,nを算出する。
【0051】
各回転軸J
iの指令角度θ
i,n*における実際の角度θ
i,nは、以下の式で表される。
θ
i,n=θ
i,n*+Δθ
i,n(θ
i,n*)
【0052】
このとき、距離d
nは、テーラー展開により、以下の式で表される。
【数1】
【0053】
上記式(1)を、記憶部22に記憶されているK個のd
kについてまとめると、以下の式(2)となる。
【数2】
【0054】
上述した測定の実施例では、同定角度と測定時の指令角度とは一致することとしたが、本算出アルゴリズムでは、同定角度と測定時の指令角度とは異なっていてもよい。以下の算出アルゴリズムの説明では、角度誤差Δθ
i,nを算出する同定角度をθ
i,n*、測定時の指令角度をθ
i,kとして記述する。
【0055】
本算出アルゴリズムで求める同定角度θ
i,n*における角度誤差Δθ
i,nを、1つのベクトルxにまとめて書くと、以下の式(3)となる。
【数3】
【0056】
上述の通り、計測されたd
kにおける各回転軸J
iの指令角度θ
i,kは、同定角度θ
i,1*,・・・,θ
i,N1*に一致するとは限らない。例えば、回転軸J
1の指令角度θ
1,kが、同定角度θ
1,1*,・・・,θ
1,N1*のいずれにも一致しない場合、Δθ
1,k(θ
1,k)は、式(3)のxの成分を内挿して、以下の式(4)で表すことができる。
【数4】
【0057】
式(4)と同様に、回転軸J
2〜J
6の指令角度θ
2,n〜θ
6,nに対する角度誤差をまとめると、以下の式(5)になる。
【数5】
【0058】
各回転軸の角度θ
1,n*〜θ
6,n*と、ロボット10の手先10aの位置p
nとの幾何学的関係を使って、上記式(1)の∂d
n/∂θ
iを計算することができる。これを使って、式(2)と式(5)とをまとめると、y=Axの形に表すことができる。ただし、
【0059】
したがって、測定回数Kが、未知数xの数より多ければ、xは以下の最小二乗法を用いて求めることができる。
【数6】
【0060】
以上により、測定された距離d
kを用いて、各回転軸J
i(i=1〜6)について、角度誤差Δθ
i,n(θ
i,n*+)、Δθ
i,n(θ
i,n*−)を算出し、ロボット10の運動精度を測定することができる。
【0061】
レーザトラッカを用いて、ロボット10の手先10aの位置p
nを測定する場合には、上記式(2)のかわりに、p
nと式(3)のxとの関係を計算し、式(6)のAを変更して、同様にxを算出する。
【0062】
ロボットの各リンクの長さの誤差、各回転軸の位置、回転中心軸の向きの誤差を、式(3)のxに含め、それに応じて式(6)のAを変更して、同様に算出することもできる。
【0063】
(ロボットの位置補正)
続いて、上記で算出した、角度誤差Δθ
i,nを用いたロボット10の位置補正方法について説明する。
【0064】
算出した角度誤差Δθ
i,nは記憶部22に記憶されている。
図5は回転軸J
1の角度誤差Δθ
1,nを表したグラフの例である。例えば、回転軸J
1について指令位置p
n*に基づいて指令角度−82°が指定された場合、現在の位置が−85°であれば、正方向へ回転した場合の角度誤差−0.011°が予測されるので、+0.011°を予め足した角度で回転軸J
1を位置決めする。
【0065】
また、指令角度θ
1,n*が−90°であり、現在の位置が−100°である場合、動作制御部211は、−82°の角度誤差と、−99°の角度誤差の内挿として、−0.012°が予測されるので、+0.012°を予め足した角度で回転軸J
2を位置決めする。
【0066】
同様に、回転軸J
2〜J
6をそれぞれの角度誤差Δθ
i,nを反映した角度で回転させる。これにより、各回転軸J
iの回転角度θ
i,nを指令角度θ
i,n*に近づけることができるので、手先10aを精度よく位置決めできる。
【0067】
以上説明したように、本実施の形態に係るロボットの運動精度測定方法では、ロボット10を動作させる各回転軸J
iについて角度誤差Δθ
i,nを算出する。これにより、ロボット10の駆動部に係る誤差を同定できるので、精度よくロボット10の運動精度を測定することができる。また、本実施の形態に係るロボットの位置補正方法では、同定した角度誤差Δθ
i,nを用いて各回転軸J
iの動作を直接補正するので、精度よくロボット10を動作させることができる。
【0068】
また、本実施の形態に係るロボットの運動精度測定方法では、ロボット10の手先10aと、基準位置に配置された反射鏡40との距離d
nに基づいてロボットの運動精度測定を行う。したがって、レーザトラッカのような、手先10aの3次元位置を測定するための高価な装置を用いることなく、安価に測定を行うことができる。
【0069】
一方、レーザトラッカを使って手先10aの3次元位置を測定することができれば、測定点数が少なく、より短い時間でロボットの運動精度測定を行うことができる。各回転軸の角度誤差を同定するアルゴリズムは、本実施の形態と同様である。
【0070】
また、本実施の形態に係るロボットの位置補正方法では、ロボット10の各回転軸J
iについて、複数の同定角度θ
i,n*で測定した角度誤差Δθ
i,nに基づいてロボット10の位置補正を行うので、精度よくロボット10を動作させることが可能である。
【0071】
本実施の形態では、同定角度θ
i,n*は、各回転軸J
iの可動範囲の両端となる角度を含み、同定角度θ
i,n*と一致しない指令角度θ
i,n*における角度誤差Δθ
i,nは、内挿によって求めることとしたが、これに限られない。例えば、同定角度θ
i,n*の範囲外となる指令角度θ
i,n*における角度誤差Δθ
i,nを外挿によって求めることとしてもよい。
【0072】
また、測定制御部212、演算部213等運動精度測定に用いられる各要素は、制御ユニット20に一体的に備えられることとしたが、これに限られない。例えば、別体の測定ユニットが測定制御部212、演算部213等を備え、複数のロボット10に適宜接続して、共用することとしてもよい。これにより、ロボット10の構成を簡素化し、より安価にロボット10の運動精度測定を行うことができる。
【0073】
また、本実施の形態では、ロボット10は、垂直多関節型ロボットであることとしたが、これに限られない。例えば、ロボット10は、水平多関節型ロボット(スカラ型ロボット)であってもよい。
【0074】
また、本実施の形態では、角度誤差Δθ
i,nを各回転軸J
iの正方向回転及び逆方向回転のそれぞれの場合について同定することとしたが、これに限られない。例えば、正方向回転の場合のみについて同定することとしてもよい。これにより、一定の精度を確保しつつ、少ない測定回数で簡易かつ迅速に角度誤差Δθ
i,nを測定することができる。