(57)【要約】【課題】ロボットの精度をその設置場所で調整する。【解決手段】エンコーダが出力した信号値と、予め用意された該信号値と関節角度との対応関係とに基づいて制御されるロボットに対し、直交座標系を第１軸がリンクの回転中心線と一致するように定義し、該座標系の原点から距離ＤＳのロボットの部分に第２軸方向の位置変化量を検出するセンサを取り付け、リンクを第２軸を基準として任意の角度回転させ、その後エンコーダの信号値ＥＡを取得する。リンクを一方側に角度β回転させ、続いてリンクを角度−２β回転させ、角度−２β回転の開始から終了までのセンサが検出した位置変化量ΔＰＳを取得する。位置変化量ΔＰＳ、距離ＤＳ、および角度βに基づいて、前記任意の角度の実際の角度αを算出し、角度αを関節角度θαに換算し、先に取得した信号値ＥＡと関節角度θαとが対応関係になるように、前記信号値と関節角度との対応関係を修正する。【選択図】図７
2011036956.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のリンクと、
リンク間に設けられた関節と、
第１のリンクに対して第２のリンクを関節中心に回転させる駆動源と、
第１のリンクと第２のリンクとの間の関節角度を検出して対応する信号値を出力する関節角度検出手段と、
関節角度検出手段が出力した信号値と、予め用意された該信号値と関節角度との対応関係とに基づいて関節角度を取得し、取得した関節角度に基づいて駆動源を制御する制御手段とを有するロボットに対し、
信号値と関節角度との対応関係が変化することによって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度調整するロボットの精度調整方法であって、
第１、第２、及び第３軸を有する直交座標系を該第１軸が第２のリンクの回転中心線と一致するように定義し、該直交座標系の第２軸−第３軸平面上であって且つ該直交座標系の原点から一定距離ＤＳのロボットの部分に該第２軸方向の位置変化量を検出するセンサを取り付ける前準備工程と、
前準備工程後、第２のリンクを前記直交座標系の第２軸を基準として任意の角度回転させる第１工程と、
前記第１工程の終了後に関節角度検出手段の信号値ＥＡを取得する第２工程と、
前記第１工程で任意の角度回転された第２のリンクを一方側に角度β１回転させる第３工程と、
前記第３工程で一方側に角度β１回転された第２のリンクを、他方側に角度β２回転させる第４工程と、
前記第４工程の開始から終了までのセンサが検出した位置変化量ΔＰＳを取得する第５工程と、
前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１，β２に基づいて、前記任意の角度の実際の角度αを算出する第６工程と、
前記第６工程で算出した角度αを関節角度θαに換算する第７工程と、
前記第２工程で取得した信号値ＥＡと前記第７工程で算出した関節角度θαとが対応関係になるように、前記信号値と関節角度との対応関係を修正する第８工程とを含むことを特徴とするロボットの精度調整方法。
【請求項２】
請求項１に記載のロボットの精度調整方法において、
角度β２は角度β１の２倍の角度であって、
前記第６工程で算出される角度αは、前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１によって数式１に示すように表現されることを特徴とするロボットの精度調整方法。
【数１】
2011036956.tif 000010
【請求項３】
複数のリンクと、
リンク間に設けられた関節と、
一方のリンクに対して他方のリンクを移動させる駆動源とを有するロボットに対し、
ロボットの個体差によって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度を調整するロボットの精度調整方法であって、
位置・姿勢の精度に影響を与えうる要因を個体差パラメータとしてパラメータ化し、位置・姿勢変化量を検出するセンサをロボットに取り付ける前準備工程と、
前準備工程後、予め設定された駆動源に対する異なる複数の制御量毎に、一意的な位置・姿勢にされているロボットの駆動源を該制御量で制御する第１工程と、
前記第１工程において駆動源が各制御量で制御される度に、センサが検出した前記一意的な位置・姿勢からの実際の位置・姿勢変化量を取得する第２工程と、
前記第２工程で取得した複数の実際の位置・姿勢変化量に基づいて、個体差パラメータの実値を算出する第３工程とを含むことを特徴とするロボットの精度調整方法。
【請求項４】
第１および第２のリンクと、
リンク間に設けられた関節と、
第１のリンクに対して第２のリンクを関節中心に回転させる駆動源と、
第１のリンクと第２のリンクとの間の関節角度を検出して対応する信号値を出力する関節角度検出手段と、
関節角度検出手段が出力した信号値と、予め用意された該信号値と関節角度との対応関係情報とに基づいて関節角度を取得し、取得した関節角度に基づいて駆動源を制御する制御手段とを有するロボットであって、
信号値と関節角度との対応関係が変化することによって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度調整する精度調整手段と、
第１、第２、及び第３軸を有し、該第１軸が第２のリンクの回転中心線と一致するように予め定義されている直交座標系と、
前記直交座標系の第２軸−第３軸平面上であって且つ該直交座標系の原点から一定距離ＤＳのロボットの部分に取り付けられ、第２軸方向の位置変化量を検出するセンサとを有し、
前記精度調整手段は、
第２のリンクを、前記制御手段を介して前記直交座標系の第２軸を基準として任意の角度回転させる第１動作と、
前記第１動作後に関節角度検出手段の信号値ＥＡを取得する第２動作と、
前記第１動作で任意の角度回転された第２のリンクを、前記制御手段を介して一方側に角度β１回転させる第３動作と、
前記第３動作で一方側に角度β１回転された第２のリンクを、前記制御手段を介して他方側に角度β２回転させる第４動作と、
前記第４動作の開始から終了までのセンサが検出した位置変化量ΔＰＳを取得する第５動作と、
前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１，β２に基づいて、前記任意の角度の実際の角度αを算出する第６動作と、
前記第６動作で算出した角度αを関節角度θαに換算する第７動作と、
前記第２動作で取得した信号値ＥＡと前記第７動作で算出した関節角度θαとが対応関係になるように、前記対応関係情報を修正する第８動作とを実行することを特徴とするロボット。
【請求項５】
請求項４に記載のロボットにおいて、
角度β２は角度β１の２倍の角度であって、
前記第６動作で算出される角度αは、前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１によって数式２に示すように表現されることを特徴とするロボット。
【数２】
2011036956.tif 000011
【請求項６】
複数のリンクと、
リンク間に設けられた関節と、
一方のリンクに対して他方のリンクを移動させる駆動源とを有するロボットであって、
ロボットの個体差によって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度を調整する精度調整手段と、
位置・姿勢の精度に影響を与えうる要因をパラメータ化したものである個体差パラメータと、
位置・姿勢変化量を検出するセンサとを有し、
前記精度調整手段は、
予め設定された駆動源に対する異なる複数の制御量毎に、一意的な位置・姿勢にされているロボットの駆動源を該制御量で制御する第１動作と、
前記第１動作において駆動源が各制御量で制御される度に、センサが検出した前記一意的な位置・姿勢からの実際の位置・姿勢変化量を取得する第２動作と、
前記第２動作において取得した複数の実際の位置・姿勢変化量に基づいて、個体差パラメータの実値を算出する第３動作とを実行することを特徴とするロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの位置・姿勢に関する精度を調整する精度調整方法および該方法を自動的に実行可能なロボットに関し、ロボットの制御技術分野に属する。
【背景技術】
【０００２】
従来より、例えば、複数のリンクと、リンク間に設けられた関節と、一方のリンクに対して他方のリンクを関節中心に回転させるモータ（駆動源）と、一方のリンクと他方のリンクとの間の関節角度を検出するエンコーダ（関節角度検出手段）とを有するロボットが知られている。
【０００３】
このようなロボットを所望の位置・姿勢に制御するとき、エンコーダの値に基づいて、具体的にはエンコーダの値が所望の位置・姿勢（所望の関節角度）に対応する値になるように、モータが制御される。そのため、エンコーダ値と関節角度とが一定の対応関係に維持されている必要がある。例えば、ゼロの関節角度に対応するエンコーダ値が所定の一定値に維持されている必要がある。
【０００４】
ところが、現実には、エンコーダ値と関節角度との対応関係は、修理のためにロボットの構成部品（特にモータやエンコーダ）が交換されるなど、ロボットの状態が変わることによって変化することがある。例えば、ゼロの関節角度に対応するエンコーダ値が、ロボットの状態が変わることによって異なる値になることがある。
【０００５】
当然ながら、エンコーダ値と関節角度との対応関係が変わると、エンコーダ値に基づいて制御されるロボットは、要求された位置・姿勢と異なる位置・姿勢になる。すなわちロボットの位置・姿勢に関する精度が悪化する。
【０００６】
したがって、ロボットの位置・姿勢に関する精度を高く維持するためには、精度調整の一環として、ロボットの状態が変わる度に、または定期的に、エンコーダ値と関節角度との対応関係を新たに調べる必要がある。そして、ロボットの状態が変わった後は、調べたエンコーダ値と関節角度との対応関係に基づいてロボットを制御する必要がある。このような精度調整は、関節角度がゼロになるときのエンコーダ値を新たに調べる場合、零点調整と呼ばれることがある。
【０００７】
また、エンコーダ値と関節角度との対応関係が一定に維持されていることは当然として、ロボットを所望の位置・姿勢に高精度に制御するためには、ロボット固有の誤差、すなわちロボットの個体差を考慮する必要がある。同一仕様のロボットであっても、製造上のバラツキ、使用期間、使用環境などにより、同じように運転しても、その結果の位置・姿勢が異なることがある。具体的に言えば、同一仕様の複数のロボットを、それぞれのモータを同一の制御量で制御しても、または同一のプログラムで自動運転しても、各ロボットの位置・姿勢は異なることがある。
【０００８】
したがって、ロボットの位置・姿勢に関する精度を高く維持するためには、精度調整の一環として、定期的に、ロボットの個体差を求める必要がある。そして、求めた個体差を考慮してロボットを制御するようにする必要がある。例えば、このように個体差を考慮してロボットを制御するロボット制御装置が、例えば特許文献１に記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−１５９３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
当然ながら、上述のような精度調整を実行する場合、エンコーダなどの手段で間接的にではなく、角度ロボットの実際の位置・姿勢を直接的に測定する必要がある。
【００１１】
ロボットの実際の位置・姿勢は、例えば、三次元測定機を用いて測定される。三次元測定機は、例えば、ロボットの複数の所定箇所それぞれに１つずつマーカを取り付け、次に各マーカの空間的位置を測定し、その測定結果に基づいてロボットの位置・姿勢を算出する。マーカの位置の測定は、例えば異なる方向からマーカを撮影する複数のカメラの撮影画像に基づいて実行される。
【００１２】
ところが、このような三次元測定機などの測定機器によってロボットの実際の位置・姿勢を直接的に測定する場合、測定対象のロボットの周りに、該測定機器を設置するための大きなスペースを必要とする。例えば、上述の三次元測定機の場合、カメラとロボットとの間に大きなスペースを設ける必要がある。しかし、現実には、ロボットが実働する場所（例えば加工ライン）に大きなスペースを確保することは困難であることが多い。そのため、精度調整のためにロボットの実際の位置・姿勢を直接的に測定するためには、ロボットを加工ラインから広い場所（例えば三次元測定機の設置場所）に移動させる必要があった。
【００１３】
そこで、本発明は、従来では例えば加工ラインなどの設置場所からの移動が必要であったロボットの精度調整を、該設置場所から移動させることなく実行し、それにより位置・姿勢に関してロボットを高精度に制御できるようにすることを課題とする。
【課題を解決するための手段】
【００１４】
上述の課題を解決するために、本願の請求項１に記載の発明は、
第１および第２のリンクと、
リンク間に設けられた関節と、
第１のリンクに対して第２のリンクを関節中心に回転させる駆動源と、
第１のリンクと第２のリンクとの間の関節角度を検出して対応する信号値を出力する関節角度検出手段と、
関節角度検出手段が出力した信号値と、予め用意された該信号値と関節角度との対応関係とに基づいて関節角度を取得し、取得した関節角度に基づいて駆動源を制御する制御手段とを有するロボットに対し、
信号値と関節角度との対応関係が変化することによって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度調整するロボットの精度調整方法であって、
第１、第２、及び第３軸を有する直交座標系を該第１軸が第２のリンクの回転中心線と一致するように定義し、該直交座標系の第２軸−第３軸平面上であって且つ該直交座標系の原点から一定距離ＤＳのロボットの部分に該第２軸方向の位置変化量を検出するセンサを取り付ける前準備工程と、
前準備工程後、第２のリンクを前記直交座標系の第２軸を基準として任意の角度回転させる第１工程と、
前記第１工程の終了後に関節角度検出手段の信号値ＥＡを取得する第２工程と、
前記第１工程で任意の角度回転された第２のリンクを一方側に角度β１回転させる第３工程と、
前記第３工程で一方側に角度β１回転された第２のリンクを、他方側に角度β２回転させる第４工程と、
前記第４工程の開始から終了までのセンサが検出した位置変化量ΔＰＳを取得する第５工程と、
前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１，β２に基づいて、前記任意の角度の実際の角度αを算出する第６工程と、
前記第６工程で算出した角度αを関節角度θαに換算する第７工程と、
前記第２工程で取得した信号値ＥＡと前記第７工程で算出した関節角度θαとが対応関係になるように、前記信号値と関節角度との対応関係を修正する第８工程とを含むことを特徴とする。
【００１５】
また、請求項２に記載の発明は、
請求項１に記載のロボットの精度調整方法において、
角度β２は角度β１の２倍の角度であって、
前記第６工程で算出される角度αは、前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１によって数式１に示すように表現されることを特徴とする。
【数１】
2011036956.tif 000003
【００１６】
さらに、請求項３に記載の発明は、
複数のリンクと、
リンク間に設けられた関節と、
一方のリンクに対して他方のリンクを移動させる駆動源とを有するロボットに対し、
ロボットの個体差によって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度を調整するロボットの精度調整方法であって、
位置・姿勢の精度に影響を与えうる要因を個体差パラメータとしてパラメータ化し、位置・姿勢変化量を検出するセンサをロボットに取り付ける前準備工程と、
前準備工程後、予め設定された駆動源に対する異なる複数の制御量毎に、一意的な位置・姿勢にされているロボットの駆動源を該制御量で制御する第１工程と、
前記第１工程において駆動源が各制御量で制御される度に、センサが検出した前記一意的な位置・姿勢からの実際の位置・姿勢変化量を取得する第２工程と、
前記第２工程で取得した複数の実際の位置・姿勢変化量に基づいて、個体差パラメータの実値を算出する第３工程とを含むことを特徴とする
【００１７】
加えて、請求項４に記載の発明は、
第１および第２のリンクと、
リンク間に設けられた関節と、
第１のリンクに対して第２のリンクを関節中心に回転させる駆動源と、
第１のリンクと第２のリンクとの間の関節角度を検出して対応する信号値を出力する関節角度検出手段と、
関節角度検出手段が出力した信号値と、予め用意された該信号値と関節角度との対応関係情報とに基づいて関節角度を取得し、取得した関節角度に基づいて駆動源を制御する制御手段とを有するロボットであって、
信号値と関節角度との対応関係が変化することによって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度調整する精度調整手段と、
第１、第２、及び第３軸を有し、該第１軸が第２のリンクの回転中心線と一致するように予め定義されている直交座標系と、
前記直交座標系の第２軸−第３軸平面上であって且つ該直交座標系の原点から一定距離ＤＳのロボットの部分に取り付けられ、第２軸方向の位置変化量を検出するセンサとを有し、
前記精度調整手段は、
第２のリンクを、前記制御手段を介して前記直交座標系の第２軸を基準として任意の角度回転させる第１動作と、
前記第１動作後に関節角度検出手段の信号値ＥＡを取得する第２動作と、
前記第１動作で任意の角度回転された第２のリンクを、前記制御手段を介して一方側に角度β１回転させる第３動作と、
前記第３動作で一方側に角度β１回転された第２のリンクを、前記制御手段を介して他方側に角度β２回転させる第４動作と、
前記第４動作の開始から終了までのセンサが検出した位置変化量ΔＰＳを取得する第５動作と、
前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１，β２に基づいて、前記任意の角度の実際の角度αを算出する第６動作と、
前記第６動作で算出した角度αを関節角度θαに換算する第７動作と、
前記第２動作で取得した信号値ＥＡと前記第７動作で算出した関節角度θαとが対応関係になるように、前記対応関係情報を修正する第８動作とを実行することを特徴とする。
【００１８】
加えてまた、請求項５に記載の発明は、
請求項４に記載のロボットにおいて、
角度β２は角度β１の２倍の角度であって、
前記第６動作で算出される角度αは、前記位置変化量ΔＰＳ、距離ＤＳ、および角度β１によって数式２に示すように表現されることを特徴とする。
【数２】
2011036956.tif 000004
【００１９】
さらに加えて、請求項６に記載の発明は、
複数のリンクと、
リンク間に設けられた関節と、
一方のリンクに対して他方のリンクを移動させる駆動源とを有するロボットであって、
ロボットの個体差によって生じる実際の位置・姿勢と本来あるべき位置・姿勢との間の誤差がゼロになるように精度を調整する精度調整手段と、
位置・姿勢の精度に影響を与えうる要因をパラメータ化したものである個体差パラメータと、
位置・姿勢変化量を検出するセンサとを有し、
前記精度調整手段は、
予め設定された駆動源に対する異なる複数の制御量毎に、一意的な位置・姿勢にされているロボットの駆動源を該制御量で制御する第１動作と、
前記第１動作において駆動源が各制御量で制御される度に、センサが検出した前記一意的な位置・姿勢からの実際の位置・姿勢変化量を取得する第２動作と、
前記第２動作において取得した複数の実際の位置・姿勢変化量に基づいて、個体差パラメータの実値を算出する第３動作とを実行することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ロボットをその設置場所から移動させることが必要な三次元測定機などの測定機器を使用することなく、代わりにロボットに取り付けられて位置変化量を検出することができるセンサを使用することにより、関節角度に対して精度調整をすることができる。これにより、関節角度検出手段の信号値と関節角度との対応関係を適切に維持することができ、該信号値から間接的に正しい（実際の）関節角度を得ることができる。その結果、位置・姿勢に関してロボットを高精度に制御することができる。
【００２１】
また、本発明によれば、ロボットをその設置場所から移動させることが必要な三次元測定機などの測定機器を使用することなく、代わりにロボットに取り付けられて位置・姿勢変化量を検出することができるセンサを使用することにより、ロボットの個体差を求めることができる。具体的には、位置・姿勢の精度に影響を与えうる要因をパラメータ化したものである個体差パラメータの実値を求めることができる。これにより、求めた個体差パラメータの実値に基づいて、ロボットを、個体差を考慮して制御することができる。その結果、位置・姿勢に関してロボットを高精度に制御することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態に係るロボットの概略的な外観と、該ロボットのリンクモデルとを示す図である。
【図２】本発明に係るセンサが取り付けられているロボットのツール取り付け面を示す図である。
【図３】ロボットに定義されている複数の座標系を示す図である。
【図４】センサが検出する位置・姿勢変化量を説明するための図である。
【図５】ロボットの制御系を示す図である。
【図６】関節角度に関して精度調整する一例の作業の流れを示す図である。
【図７】関節角度に関する精度調整を説明するための図である。
【図８】一意的な位置・姿勢のロボットを示す図である。
【図９】目標位置・姿勢と、それに必要なモータ制御量と、その結果得られた位置・姿勢変化量とのテーブルである。
【図１０】精度調整としてロボットの個体差を求める一例の作業の流れを示す図である。
【発明を実施するための形態】
【００２３】
図１は、本発明の一実施形態に係るロボットの一例を概略的に示すとともに（図１（Ａ））、そのロボットのリンクモデルを示している（図１（Ｂ））。
【００２４】
図１に示すように、ロボット１０は、多関節のアーム型ロボットであって、複数のリンクＬ０〜Ｌ６と、各リンク間に設けられた関節Ｊ１〜Ｊ６とを有する。６つの関節のうち、関節Ｊ１，Ｊ４，Ｊ６はねじり関節であって、関節Ｊ２，Ｊ３，Ｊ５は曲げ関節である。なお、ロボット１０は、本発明に係るロボットの一例であって、本発明を限定するものではない。
【００２５】
ねじり関節は、連結している２つのリンクを１つの棒とみなすとその棒をねじるように、２つのリンクの連結方向に延びる回転中心線を中心にして（ねじれ方向に）一方のリンクに対して他方のリンクを回転させる関節である。
【００２６】
曲げ関節は、連結している２つのリンクを１つの棒とみなすとその棒を曲げるように、該関節を中心として（曲げ方向に）一方のリンクに対して他方のリンクを回転させる関節である。
【００２７】
図１（Ｂ）に示すように、リンクＬ０は、ロボット１０の設置場所に対して不動にされている。
【００２８】
リンクＬ１は、関節Ｊ１を中心としてリンクＬ０に対してねじれ方向に回転する。以後、このリンクＬ０とリンクＬ１との間のねじれ方向の関節角度をθ１と表現する。
【００２９】
リンクＬ２は、関節Ｊ２を中心としてリンクＬ１に対して曲げ方向に回転する。以後、このリンクＬ１とリンクＬ２との間の曲げ方向の関節角度をθ２と表現する。
【００３０】
リンクＬ３は、関節Ｊ３を中心としてリンクＬ２に対して曲げ方向に回転する。以後、このリンクＬ２とリンクＬ３との間の曲げ方向の関節角度をθ３と表現する。
【００３１】
リンクＬ４は、関節Ｊ４を中心としてリンクＬ３に対してねじれ方向に回転する。以後、このリンクＬ３とリンクＬ４との間のねじれ方向の関節角度をθ４と表現する。
【００３２】
リンクＬ５は、関節Ｊ５を中心としてリンクＬ４に対して曲げ方向に回転する。以後、このリンクＬ４とリンクＬ５との間の曲げ方向の関節角度をθ５と表現する。
【００３３】
リンクＬ６は、関節Ｊ６を中心としてリンクＬ５に対してねじれ方向に回転する。以後、このリンクＬ５とリンクＬ６との間のねじれ方向の関節角度をθ６と表現する。
【００３４】
なお、本明細書では、図１に示すように、曲げ関節の関節角度θ２，θ３，θ５は２つのリンクが重なるときを基準（ゼロ）として定義しているが、本発明はこれに限らない。本発明に係る関節角度は、広義には、関節角度が決まると２つのリンクの相対的な位置関係が決まるものである。したがって、例えば、関節角度は、２つのリンクが一直線上にあるときを基準（ゼロ）とする定義であってもよい。
【００３５】
また、ロボット１０は、その先端に溶接ガンやスプレーガンなどの作業ツールが取り付けられるツール取り付け面１２を備え、本発明においては、図２に示すようにセンサＳが取り付けられる。なお、センサＳの詳細については後述する。
【００３６】
さらに、ロボット１０には、図３に示すように、リンクＬ１〜Ｌ６やツール取り付け面１２の位置・姿勢を特定するために、複数の直交座標系ΣＢ、ΣＬ１、ΣＬ２、ΣＬ３、ΣＬ４、ΣＬ５、ΣＬ６、およびΣｔが定義されている。
【００３７】
座標系ΣＢは、リンクＬ０に対して定義されている座標系であって、またロボット１０の基準（ベース）座標系でもあって、鉛直方向に延びるＺＢ軸を有する。ロボット１０の各リンクＬ１〜Ｌ６やツール取り付け面１２、該ツール取り付け面１２に取り付けられるツール、およびロボット１０の作業対象のワークは、通常、その位置・姿勢がこの座標系に基づいて表現される。
【００３８】
座標系ΣＬ１は、リンクＬ１に対して定義されている座標系であって、図１に示す関節Ｊ１の回転中心線に沿って且つリンクＬ１が延びる方向と一致するＺ１軸を有し、その原点Ｏ１が常に基準座標系ΣＢにおける座標（０，０，Ｄ０）の位置に存在する。また、座標系ΣＬ１は、基準座標系ΣＢをそのＺＢ軸方向に距離Ｄ０平行移動したものと等価である。この距離Ｄ０は、設計によって決まる値であって一定値である。
【００３９】
座標系ΣＬ２は、リンクＬ２に対して定義されている座標系であって、該リンクＬ２の延びる方向と一致するＸ２軸と、図１に示す関節Ｊ２の回転中心線に沿ったＺ２軸（図面垂直方向の軸）をと有し、その原点Ｏ２が常に座標系ΣＬ１における座標（０，０，Ｄ１）の位置に存在する。また、座標系ΣＬ２は、座標系ΣＬ１をそのＺ１軸方向に距離Ｄ１平行移動し、その後Ｙ１軸中心に角度９０度回転させたものと等価である。この距離Ｄ１は、設計によって決まる値であって一定値である。
【００４０】
座標系ΣＬ３は、リンクＬ３に対して定義されている座標系であって、該リンクＬ３の延びる方向と一致するＸ３軸と、関節Ｊ３の回転中心線に沿ったＺ３軸（図面垂直方向の軸）とを有し、その原点Ｏ３が常に座標系ΣＬ２の原点Ｏ２から距離Ｄ２離れた位置に存在する。また、座標系ΣＬ３は、座標系ΣＬ２をそのＸ２軸方向に距離Ｄ２平行移動したものと等価である。この距離Ｄ２は、設計によって決まる値であって一定値である。
【００４１】
座標系ΣＬ４は、リンクＬ４に対して定義されている座標系であって、関節Ｊ４の回転中心線に沿って且つリンクＬ４が延びる方向と一致するＺ４軸を有し、その原点Ｏ４が常に座標系ΣＬ３の原点Ｏ３から距離Ｄ３離れた位置に存在する。また、座標系ΣＬ４は、座標系ΣＬ３をそのＸ３軸方向に距離Ｄ３平行移動し、その後Ｙ３軸中心に９０度回転させたものと等価である。この距離Ｄ３は、設計によって決まる値であって一定値である。
【００４２】
座標系ΣＬ５は、リンクＬ５に対して定義されている座標系であって、該リンクＬ５の延びる方向と一致するＸ５軸と、関節Ｊ５の回転中心線に沿ったＺ５軸（図面垂直方向の軸）を有し、その原点Ｏ５が常に座標系ΣＬ４の原点Ｏ４から距離Ｄ４離れた位置に存在する。また、座標系ΣＬ５は、座標系ΣＬ４をそのＺ４軸方向に距離Ｄ４平行移動し、その後Ｙ４軸中心に９０度回転させたものと等価である。この距離Ｄ４は、設計によって決まる値であって一定値である。
【００４３】
座標系ΣＬ６は、リンクＬ６に対して定義されている座標系であって、関節Ｊ６の回転中心線に沿って且つリンクＬ５が延びる方向と一致するＺ６軸を有し、その原点Ｏ６が常に座標系ΣＬ５の原点Ｏ５から距離Ｄ５離れた位置に存在する。また、座標系ΣＬ６は、座標系ΣＬ５をそのＸ５軸方向に距離Ｄ５平行移動し、その後Ｙ５軸中心に９０度回転させたものと等価である。この距離Ｄ５は、設計によって決まる値であって一定値である。
【００４４】
座標系Σｔは、ツール取り付け面１２に対して定義されているツール座標系であって、図２にも示すようにツール取り付け面１２と直交するＺｔ軸を有し、その原点Ｏｔが常に座標系ΣＬ６における座標（０，０，Ｄ６）の位置の該ツール取り付け面１２上に存在する。また、ツール座標系Σｔは、座標系ΣＬ６をそのＺ６軸方向に距離Ｄ６平行移動したものと等価である。この距離Ｄ６は、設計によって決まる値であって一定値である。
【００４５】
これらのことからも明らかなように、座標系ΣＬ１〜ΣＬ６やツール座標系Σｔは、基準座標系ΣＢを平行移動し、少なくとも１つの座標軸（ＸＢ軸、ＹＢ軸、ＺＢ軸）中心に回転させたものと等価である。
【００４６】
図２に示すように、ツール座標系Σｔが定義されているツール取り付け面１２には、本発明に係る精度調整を実施する場合、センサＳが取り付けられる。センサＳは、図２や図４に示すように、自身にセンサ座標系ΣＳが定義されている。このセンサＳは、例えばジャイロセンサであって、該センサＳ自身が移動されることによって生じるセンサ座標系ΣＳの位置と姿勢の変化量を検出するように構成されている。例えば、図４に示すように、移動前の座標系ΣＳから移動後の座標系ΣＳ’への位置・姿勢変化量を検出する。また、センサＳは、検出した位置・姿勢変化量に対応する信号を出力するように構成されている。センサＳから出力された信号は例えばモニタに入力され、該信号に対応する位置・姿勢変化量が該モニタに表示される。
【００４７】
なお、本明細書では、例えば、図４に示すように、移動後の座標系ΣＳ’が、移動前の座標系ΣＳを、そのＸＳ軸方向に移動量Δｘだけ平行移動し、ＹＳ軸方向に移動量Δｙだけ平行移動し、ＺＳ軸方向に移動量Δｚだけ平行移動し、ＸＳ軸中心に角度ΔＲＸ回転し、ＹＳ軸中心に角度ΔＲＹ回転し、ＺＳ軸中心に角度ΔＲＺ回転させたものである場合、その変化量を［Δｘ，Δｙ，Δｚ，ΔＲＸ，ΔＲＹ，ΔＲＺ］の形で表現する。
【００４８】
また、センサＳは、図２に示すように、そのセンサ座標系ΣＳがツール座標系Σｔにおける一定の位置（座標）に一定の姿勢で存在するように、ツール取り付け面１２に取り付けられている。
【００４９】
具体的には、センサＳは、ツール取り付け面１２に位置決め状態で取り付けられている治具１４によって支持されている。この治具１４は、ツール取り付け面１２に取り付けられるベース部１４ａと、該ベース部１４ａから延びる「Ｚ」字形状のアーム部１４ｂから構成され、該アーム部１４ｂの先端にセンサＳが取り付けられている。この治具１４のアーム部１４ｂは、センサ座標系ΣＳの原点ＯＳがツール座標系Σｔにおける座標（−Ｄ７，０，Ｄ８）に存在するように構成されている。
【００５０】
さらにまた、ロボット１０は、該ロボット１０の制御系の構成の概略図である図５に示すように、関節Ｊ１〜Ｊ６を中心にしてリンクＬ１〜Ｌ６を回転させるモータＭ１〜Ｍ６と、間接角度を検出するエンコーダＥ１〜Ｅ６と、各エンコーダからの信号に基づいて各モータを制御する制御装置３０を有する。
【００５１】
モータＭ１〜Ｍ６は、一方のリンクに対して他方のリンクを回転させる駆動源であって、モータＭ１はリンクＬ０に対してリンクＬ１をねじれ方向に回転させる。また、モータＭ２はリンクＬ１に対してリンクＬ２を曲げ方向に回転させ、モータＭ３はリンクＬ２に対してリンクＬ３を曲げ方向に回転させ、モータＭ４はリンクＬ３に対してリンクＬ４をねじれ方向に回転させ、モータＭ５はリンクＬ４に対してリンクＬ５を曲げ方向に回転させ、そしてモータＭ６はリンクＬ５に対してリンクＬ６をねじれ方向に回転させる。
【００５２】
エンコーダＥ１〜Ｅ６は、関節角度を検出する関節角度検出手段であって、エンコーダＥ１は関節角度θ１を検出する。また、エンコーダＥ２は関節角度θ２を検出し、エンコーダＥ３は関節角度θ３を検出し、エンコーダＥ４は関節角度θ４を検出し、エンコーダＥ５は関節角度θ５を検出し、そしてエンコーダＥ６は関節角度θ６を検出する。
【００５３】
また、エンコーダＥ１〜Ｅ６それぞれは、検出した関節角度に対応する値の信号を制御装置３０に出力するように構成されている。
【００５４】
制御装置３０は、複数のエンコーダＥ１〜Ｅ６それぞれから出力された信号値を取得するエンコーダ値取得部３２と、エンコーダ値取得部３２が取得した信号値に基づいてロボットの位置・姿勢を算出する位置・姿勢算出部３４と、複数のモータＭ１〜Ｍ６を制御するモータ制御部３６と、ロボット１０を自動運転するプログラムやロボット１０の制御に必要なデータなどを記憶する記憶部３８とを有する。また、制御装置３０は、インターフェースとして、ユーザがロボット１０をマニュアル操作するためのティーチペンダント４０を有する。
【００５５】
エンコーダ値取得部３２は、複数のエンコーダＥ１〜Ｅ６それぞれから出力された信号値を取得するように構成されている。
【００５６】
位置・姿勢算出部３４は、エンコーダ値取得部３２が取得した信号値と、予め用意された該信号値と関節角度との対応関係に基づいて、リンクＬ１〜Ｌ６の位置・姿勢、すなわちロボット１０の位置・姿勢を算出するように構成されている。
【００５７】
具体的には、予め、エンコーダＥ１〜Ｅ６それぞれが出力する信号値と関節角度θ１〜θ６との対応関係を示す情報が対応関係データとして、また、ロボット１０の構成を示す情報（例えば、図３に示す距離Ｄ１〜Ｄ６）が構成データとして、記憶部３８に記憶されている。
【００５８】
位置・姿勢算出部３４は、エンコーダ値取得部３２が５つのエンコーダＥ１〜Ｅ６から信号値を取得すると、記憶部３８に記憶されている対応関係データを参照して、該データから取得した信号値と対応する関節角度θ１〜θ６を抽出する。そして、位置・姿勢算出部３４は、抽出した関節角度θ１〜θ６と、記憶部３８に記憶されている構成データと、図３に示す複数の座標系とに基づいて、基準座標系ΣＢにおける、リンクＬ１〜Ｌ６それぞれの位置・姿勢と、ツール取り付け面１２の位置・姿勢とを算出する。すなわちロボット１０の位置・姿勢を算出する。
【００５９】
モータ制御部３６は、ロボット１０を要求された位置・姿勢にするために必要な制御量で複数のモータＭ１〜Ｍ６を制御するように構成されている。
【００６０】
具体的には、ユーザからティーチペンダント４０を介して、または記憶部３８に記憶されているプログラムから新たな位置・姿勢が要求されると、制御装置３０は、現在の位置・姿勢から要求された新たな位置・姿勢にするために必要な６つのモータＭ１〜Ｍ６の制御量を算出する。その算出した制御量に基づいて、モータ制御部３６は、６つのモータＭ１〜Ｍ６を制御する。
【００６１】
記憶部３８は、上述した対応関係データや構成データなどのデータを保持するものであって、該データを更新可能（書き換え可能）に保持できるＲＡＭやＨＤなどで構成されている。
【００６２】
ティーチペンダント４０は、ユーザが、ロボット１０をマニュアル操作したり、制御装置３０に対して制御値を入力するためのコントローラであって、特にティーチングを目的として使用される。
【００６３】
ティーチング（モード）は、簡単に説明すると、ロボットに所望の連続動作を覚えさせる、すなわち所望の連続動作でロボット１０を自動運転させるプログラムを直感的に作成するためのものである。ティーチングモードにおいて、ユーザがティーチペンダント４０を介してロボット１０を所望の連続動作に操作すると、制御装置３０は、その操作によるロボット１０の動きによって変化するエンコーダの信号値に基づいて位置・姿勢の変化を算出し、算出した位置・姿勢の変化に基づいて、所望の連続動作でロボットを自動運転させるプログラムを自動的に作成する。
【００６４】
以上、ここまでは、一例のロボット１０の構成や動作原理について説明してきた。ここからは、ロボット１０を位置・姿勢に関して高精度に制御するために必要な、本発明に係る精度調整について詳細に説明する。
【００６５】
上述したように、エンコーダの現在の信号値から間接的に対応する現在の関節角度を知ることができる。これは、エンコーダの信号値と関節角度との一定の対応関係が維持されていることによる。
【００６６】
ところが、一定に維持されているはずのエンコーダの信号値と関節角度との対応関係が、ロボットの構成部品（特にエンコーダやモータ）が交換されるなどによって変化することがある（上述のロボット１０の場合、記憶部３８に記憶されている対応関係データが示す対応関係と異なった関係に変化することがある）。例えば、ゼロの関節角度に対応するエンコーダの信号値が、ロボットの状態が変わることによって異なる値になることがある。
【００６７】
当然ながら、エンコーダの信号値と関節角度との対応関係が変わると、エンコーダの信号値に基づいて制御されるロボットは、要求された位置・姿勢と異なる位置・姿勢になる。すなわちロボットの位置・姿勢に関する精度が悪化する。
【００６８】
したがって、ロボットの位置・姿勢に関する精度を維持するためには、精度調整の一環として、ロボットの状態が変わる度に、または定期的に、エンコーダの信号値と関節角度との対応関係を新たに調べる必要がある。
【００６９】
図１に示す一例のロボット１０においては、関節角度θ１〜θ６を検出するエンコーダＥ１〜Ｅ６が精度調整対象である。各エンコーダに対して実施される精度調整（対応関係を新たに調べること）の内容は同じである。
【００７０】
図６は本発明に係る精度調整の一例の作業の流れを示している。図７は、エンコーダＥｎ（ｎは、１，２，３，４，５，６のいずれか）に対する精度調整を説明するための図である。
【００７１】
図７に示す距離ＤＳは、関節Ｊｎ（リンクＬｎ）（ｎは、１，２，３，４，５，６のいずれか）の回転中心線からセンサＳ（センサ座標系ΣＳの原点ＯＳ）までの該回転中心線と直交する平面上の距離を示している。この距離ＤＳは、図２や図３に示す距離Ｄ１〜Ｄ８と、関節角度θ１〜θ６とに基づいて幾何学的に算出することができる。例えば、関節Ｊ６の場合、距離ＤＳは、図２の距離Ｄ７に該当する。また、例えば、関節Ｊ３（リンクＬ３）の場合、距離ＤＳは、距離Ｄ３〜Ｄ８と関節角度θ４〜θ６に基づいて算出することができる。
【００７２】
なお、この距離ＤＳについて補足すると、精度調整は、センサＳに近いエンコーダから実施する、すなわちＥ６，Ｅ５，Ｅ４，Ｅ３，Ｅ２，Ｅ１の順に実施するべきである。理由は、例えば、エンコーダＥ４を精度調整するときに距離ＤＳを求めるにあたり、関節角度θ５，θ６の正確な値が必要であるからである、すなわちエンコーダＥ５，Ｅ６の精度調整が完了している必要があるからである。
【００７３】
また、図７に示すＸＡ−ＹＡ−ＺＡ座標系（ＺＡ軸は図面垂直方向）は、エンコーダＥｎの精度調整のために任意に定義された座標系であって、ＺＡ軸が関節Ｊｎ（リンクＬｎ）の回転中心線と一致するように定義される。また、この座標系は、リンクＬ１〜Ｌ６それぞれに定義されている座標系ΣＬ１〜ΣＬ６と異なり、すなわちリンクとともに回転する座標系と異なり、不動に定義される。
【００７４】
まず、図６に示すように、精度調整の最初の工程として（ステップＳ１００において）、図７に示すように、任意のＸＡ−ＹＡ−ＺＡ座標系を、そのＺＡ軸がリンクＬｎの回転中心線と一致するように定義する。
【００７５】
次に、ステップＳ１１０において、図２に示すように、センサＳをロボット１０のツール取り付け面１２に取り付ける。
【００７６】
次に、ステップＳ１２０において、ティーチペンダント４０を介して、図７に示すように、リンクＬｎがステップＳ１１０で定義した任意のＸＡ−ＹＡ−ＺＡ座標系のＸＡ軸を基準として任意の角度になるように、その結果としてセンサＳが任意の位置Ｐ０に位置するように、該リンクＬｎを移動させる。
【００７７】
続いて、ステップＳ１３０において、リンクＬｎがＸＡ軸を基準として任意角度であるときの（センサＳが任意位置Ｐ０に位置するときの）エンコーダＥｎの信号値ＥＡを取得する。
【００７８】
ステップＳ１４０において、図７に示すように、リンクＬｎを角度＋βだけ（正方向に角度βの回転量で）回転させる。その結果として、センサＳは位置Ｐ１に移動する。このステップは、ステップＳ１１０とは異なりマニュアル操作ではなく、例えばユーザがティーチペンダント４０を操作して回転量として角度＋βを制御装置３０に入力し、その入力に基づいて制御装置３０がリンクＬｎを回転させるモータＭｎを制御することにより実行される。
【００７９】
なお、補足すると、例えば角度＋βなどの所望の回転量は、該回転量でリンクが回転する前のエンコーダの信号値と、その回転後の信号値との差が、該回転量に対応する差になるようにモータを制御することにより正確に実現される。または、モータがパルスモータの場合、入力パルス信号のパルス数を所望の回転量と対応する数にすることによって実現される。したがって、エンコーダの信号値と関節角度との対応関係が変化していても影響はなく、所望の回転量でのリンクの回転は正確に実行することができる。
【００８０】
ステップＳ１５０において、ステップＳ１４０と同じやり方で、図７に示すように、リンクＬｎを角度−２βだけ（負方向に角度２βの回転量で）回転させる。その結果として、センサＳは位置Ｐ２に移動する。
【００８１】
ステップＳ１６０において、センサＳが位置Ｐ１から位置Ｐ２まで移動したときの該センサＳが検出した位置変化量を取得する。具体的には、センサＳが検出した位置変化量をステップＳ１００で定義した任意のＸＡ−ＹＡ−ＺＡ座標系換算し、その座標系におけるＸＡ軸方向の位置変化量ΔｘＳＡを取得する。
【００８２】
ステップＳ１７０において、ステップＳ１６０で取得した位置変化量ΔｘＳＡに基づいて、センサＳが任意位置Ｐ０に位置したときのリンクＬｎのＸＡ軸を基準とする任意の角度の実際の角度を算出する。
【００８３】
具体的に説明する。まず、図７に示すように、センサＳが任意位置Ｐ０に位置するときのリンクＬｎの実際のＸＡ軸を基準とする角度をαとする。
【００８４】
この角度α、距離ＤＳ、および角度βを用いると、センサＳが位置Ｐ１からＰ２に移動したときのＸＡ軸方向の数学的な位置変化量ΔｘＡは、数３に示す数式３の形に表現することができる。数式３において未知数はΔｘＡとαである。
【数３】
2011036956.tif 000005
【００８５】
ＸＡ軸方向の数学的な位置変化量ΔｘＡは、その実値がステップＳ１６０でセンサＳからΔｘＳＡとして取得されているので、数式３のΔｘＡにこれを代入する。そして、式変形すると、角度αは、数４に示す数式４の形に表現される。
【数４】
2011036956.tif 000006
【００８６】
これにより、ステップＳ１１０でセンサＳを任意位置Ｐ０に位置させたときの、すなわちリンクＬｎをＸＡ軸を基準として任意の角度にしたときの実際の該ＸＡ軸を基準とする角度αが算出される。
【００８７】
なお、実際の角度αを算出するにあたり、上述ではＸＡ軸方向の位置変化量を用いているが、ＹＡ軸方向の位置変化量であってもよい。その場合の角度αは数５に示す数式５の形に表現される。数式５において、ΔｙＳＡは、センサＳが検出した位置変化量をステップＳ１００で定義した任意のＸＡ−ＹＡ−ＺＡ座標系換算したもので、該任意のＸＡ−ＹＡ−ＺＡ座標系におけるＹＡ軸方向の位置変化量である。
【数５】
2011036956.tif 000007
【００８８】
また、ＸＡ軸方向の位置変化量とＹＡ軸方向の位置変化量の両方を用いて、すなわち数式４と数式５とを用いて角度αを算出してもよい。このとき、数式４と数式５とから同一値の角度αが算出されれば、算出した角度αの正しさが保証される。
【００８９】
図６に戻り、ステップＳ１８０において、ステップＳ１７０で算出した角度αを、リンクＬｎとリンクＬｎ−１との間の関節角度θαに換算する。これは、角度αが、ステップＳ１００で定義された任意のＸＡ−ＹＡ−ＺＡ座標系のＸＡ軸を基準とするリンクＬｎの角度であって、ロボット１０の関節角度と異なるためである。
【００９０】
例えば、図１や図３に示すようにリンクＬｎとＬｎ−１が重なるときに角度がゼロになるように関節角度が定義され、図７に示す任意のＸＡ−ＹＡ−ＺＡ座標系のＸＡ軸（正の値側）がリンクＬｎ−１と重なるように該任意のＸＡ−ＹＡ−ＺＡ座標系が定義された場合は、角度αの値をそのまま関節角度の値として使用することができる。
【００９１】
これと異なり、例えば、図７に示す任意の座標系のＸＡ軸（負の値側）がリンクＬｎ−１と重なるように該任意の座標系が定義された場合は、角度αに１８０°を足した値が、関節角度の値となる。
【００９２】
図６に戻り、ステップＳ１９０において、ステップＳ１３０で取得したエンコーダＥｎの信号値ＥＡとステップＳ１８０で算出した関節角度θαとが対応関係になるように、記憶部３８に記憶されている対応関係データを修正する。そして、エンコーダＥｎに対する精度調整を終了する。
【００９３】
このような精度調整を実施することにより、以後、エンコーダＥｎの信号値から、間接的に正しい（実際の）関節角度θｎを得ることができる。
【００９４】
なお、精度調整対象のエンコーダＥｎとセンサＳとの間に関節が存在する場合、精度調整中は、該関節が不動にすなわち対応するモータが不動にされる。これは、精度調整対象のエンコーダＥｎとセンサＳとの間の関節（モータ）が動くと、図７に示す回転中心線からセンサＳまでの距離ＤＳが変化し、精度調整を正常に実施できないからである。
【００９５】
次に、精度調整の一環として、本発明に係るロボットの個体差を求める方法について説明する。
【００９６】
まず、前提となる個体差の概念から説明する。
【００９７】
ロボットは、所望な位置・姿勢に対応する制御量でモータを制御しても、その個体差を原因として、本来あるべき位置・姿勢からずれた位置・姿勢になることがある（誤差が生じることがある）。ここで言う「本来あるべき位置・姿勢」とは、モータの制御量から数学的に算出される、個体差のないロボットにおける理想的な位置・姿勢を言う。
【００９８】
この対処として、モータ制御量が、モータ制御後にロボットが所望の位置・姿勢になるように、個体差に基づいて補正される。そして、補正後の制御量でモータを制御することにより、ロボットは所望の位置・姿勢にされる。
【００９９】
この個体差は、パラメータ化（変数化）され、予め定義されている。具体的に言えば、個体差パラメータは、個体毎に実値が異なりうる且つ位置・姿勢の精度に影響を与えうる要因をパラメータ化して得られたものである。
【０１００】
個体差パラメータの一例を挙げると、図３に示すロボット１０の距離Ｄ１〜Ｄ６は、現実には製造上のバラツキなどを原因にしてロボット毎にわずかに異なる。例えば、個体差パラメータγ１〜γ６が定義されており、距離Ｄ１〜Ｄ６は、この個体差パラメータと設計図面上（理論上）の距離Ｄ１Ｔ〜Ｄ６Ｔとを用いて、数６に示す数式６で表現される。
【数６】
2011036956.tif 000008
【０１０１】
なお、当然ながら、これ以外にも、位置・姿勢の精度に影響を与えうる要因であって個体差パラメータを定義することができるものがあり、例えば、リンクの重量、モータからリンクにトルクを伝達するギヤなどの伝達手段の伝達効率などがある。
【０１０２】
本発明に係るロボットの個体差を求める方法では、このような個体差パラメータの実値を算出する。
【０１０３】
ロボット１０の個体差を求める（個体差パラメータの実値を求める）にあたり、まず、図８に示すように、該ロボット１０を一意的な位置・姿勢にする、言い換えると、センサＳを基準座標系ΣＢにおいて一意的な位置・姿勢にする治具５０が使用される。
【０１０４】
なお、ここで言うロボット１０の一意的な位置・姿勢とは、該一意的な位置・姿勢をとるにあたってリンクＬ１〜Ｌ６やツール取り付け面１２の位置・姿勢が１つしかとりえない位置・姿勢を言い、センサＳがツール取り付け面１２に取り付けられている場合は、そのセンサ座標系ΣＳが基準座標系ΣＢにおいて１つの位置に１つの姿勢で存在する状態を言う。
【０１０５】
この治具５０は、ロボット１０の基準座標系ΣＢにおける一定位置に配置され、例えばロボット１０のツール取り付け面１２と係合し、センサＳの基準系ΣＢおける位置・姿勢を［ｘｅ，ｙｅ，ｚｅ，ＲＸｅ，ＲＹｅ，ＲＺｅ］にセットする。
【０１０６】
また、センサＳは一意的な位置・姿勢から予め目標として決められた異なる複数の位置・姿勢に制御される。
【０１０７】
具体的には、図９に示すように、各目標位置・姿勢Ｐｔｎ毎に、一意的な位置・姿勢から該目標位置・姿勢にセンサＳを移動させるモータＭ１〜Ｍ６それぞれの制御量が予め決められている。例えば、図９に示すように、目標位置・姿勢Ｐｔ１の場合、モータＭ１は制御量Ｃ１１で制御され、モータＭ２は制御量Ｃ２１、モータＭ３は制御量Ｃ３１、モータＭ４は制御量Ｃ４１、モータＭ５は制御量Ｃ５１、モータＭ６は制御量Ｃ６１で制御される。
【０１０８】
さらに、センサＳが一意的な位置・姿勢から各目標位置・姿勢Ｐｔｎに移動される度に、該センサＳが検出した該センサＳの位置・姿勢変化量ΔＰＳｎが取得される。そして、取得されたセンサＳの位置・姿勢変化量ΔＰＳｎは基準座標系ΣＢに換算される。基準座標系ΣＢに換算した後のセンサＳの位置・変化量ΔＰＳＢｎは、図９に示すように、対応する目標位置・姿勢Ｐｔｎ（モータＭ１〜Ｍ６の制御量Ｃｍｎ）に対応付けされて、例えば記憶部３８にデータとして記憶される。
【０１０９】
一意的な位置・姿勢から各目標位置・姿勢ＰｔｎにセンサＳが移動される度に、該センサＳの実際の位置・姿勢変化量（基準座標系ΣＢ換算）ΔＰＳＢｎを取得すると、図９に示すように、目標位置・姿勢ＰｔｎとセンサＳの実際の位置・姿勢変化量ΔＰＳＢｎとの組み合わせが、複数（ｎ組）作成される。
【０１１０】
ここで、センサＳの一意的な位置・姿勢からの位置・姿勢変化量が個体差パラメータやモータ制御量などから数学的に算出可能であることから、センサＳの位置・姿勢変化量を個体差パラメータを変数とする関数であると考える。
【０１１１】
例えば、ロボット１０の場合、一意的な位置・姿勢から目標位置・姿勢ＰｔｎまでのセンサＳの数学的な位置・姿勢変化量ΔＰＢｎ（基準座標系ΣＢ基準）は、図２や図３に示す距離Ｄ１〜Ｄ８や関節角度θ１〜θ６などから算出することができる。このうち距離Ｄ１〜Ｄ６は、上述の数式６に示すように個体差パラメータγ１〜γ６と設計図面上（理論上）の距離Ｄ１Ｔ〜Ｄ６Ｔとからなる値である。また、関節角度θ１〜θ６は、モータ制御量Ｃ１ｎ〜Ｃ６ｎによって決まる値である。さらに、このモータ制御量Ｃ１ｎ〜Ｃ６ｎは予め定義されている。したがって、数学的なセンサＳの位置・姿勢変化量ΔＰＢｎは、数７の数式７に示すように、個体差パラメータγ１〜γ６を変数とする関数とみなすことができる。
【数７】
2011036956.tif 000009
【０１１２】
この数式７に示すΔＰＢｎにセンサＳが検出した実値のΔＰＳＢｎを代入すれば、個体差パラメータγ１〜γ６を未知数とする６ｎ個の連立方程式を作成することができる（「６」は、位置・姿勢変化量が、図９に示すように、Δｘ，Δｙ，Δｚ，ΔＲＸ，ΔＲＹ，ΔＲＺの６つのパラメータで示されることによる）。そして、連立方程式を解けば、その解として個体差パラメータγ１〜γ６の実値を得ることができる。
【０１１３】
まとめると、まず、前準備として、一意的な位置・姿勢から目標位置・姿勢ＰｔｎまでのセンサＳの位置・姿勢変化量を複数の個体差パラメータを変数とする関数とみなし、目標位置・姿勢Ｐｔｎ毎に該関数を予め用意する。目標位置・姿勢Ｐｔｎ毎に、センサＳが検出した実際の位置・姿勢変化量を対応する関数に代入して複数の個体差パラメータを未知数とする６個の連立方程式を作成する。このように作成された、目標位置・姿勢Ｐｔｎの数の６倍個の連立方程式を解くことにより、複数の個体差パラメータを算出する。
【０１１４】
これにより、ロボット１０の個体差パラメータの実値を算出することができる。
【０１１５】
ここからは、個体差パラメータを求める、本発明に係る精度調整の一例の作業の流れを、図１０を参照しながら説明する。
【０１１６】
まず、ステップＳ３００において、図８に示すように、治具５０によってセンサＳを一意的な位置・姿勢にセットする。
【０１１７】
ステップＳ３１０において、図９に示すように、モータＭ１〜Ｍ６それぞれを目標位置・姿勢Ｐｔｎに対応する所定制御量で制御する。
【０１１８】
ステップＳ３２０において、ステップＳ３１０でモータＭ１〜Ｍ６それぞれを所定制御量で制御することによってセンサＳが検出した位置・姿勢変化量ΔＰＳｎを取得する。
【０１１９】
ステップＳ３３０において、ステップＳ３２０で取得した位置・姿勢変化量ΔＰＳｎを、基準座標系ΣＢに換算する（位置変化量ΔＰＳＢｎを取得する）。
【０１２０】
ステップＳ３４０において、ステップＳ３３０で取得した位置変化量ΔＰＳＢｎを、図９に示すように、目標位置・姿勢Ｐｔｎと対応付けして、例えば制御装置３０の記憶部３８に記憶する。
【０１２１】
ステップＳ３５０において、一意的な位置・姿勢から複数の目標位置・姿勢ＰｔｎにセンサＳが移動したか否かが判定される。複数の目標位置・姿勢ＰｔｎにセンサＳが移動した場合はステップＳ３６０に進み、そうでない場合はステップＳ３９０に進む。
【０１２２】
ステップＳ３６０において、一意的な位置・姿勢から複数の目標位置・姿勢ＰｔｎそれぞれにセンサＳが移動したことによって得た複数の位置・姿勢変化量ΔＰＳＢｎを用い、個体差パラメータを未知数とする連立方程式を作成する。
【０１２３】
ステップＳ３７０において、ステップＳ３６０で作成した連立方程式を解いて、個体差パラメータの実値を算出する。
【０１２４】
ステップＳ３８０において、ステップＳ３７０で算出された個体差パラメータの実値を、例えば制御装置３０の記憶部３８に記憶する。そして、精度調整を終了する。
【０１２５】
一方、ステップＳ３５０で複数の目標位置・姿勢ＰｔｎにセンサＳが移動していないと判定した場合、次の目標位置・姿勢Ｐｔｎに変更してスタートに戻る。
【０１２６】
以上のような本実施形態によれば、ロボット１０をその設置場所から移動させることが必要な三次元測定機などの測定機器を使用することなく、代わりにロボット１０に取り付けられて位置変化量を検出することができるセンサＳを使用することにより、関節角度θ１〜θ６に対して精度調整をすることができる。これにより、エンコーダＥ１〜Ｅ６の信号値と関節角度θ１〜θ６との対応関係を適切に維持することができ、該信号値から間接的に正しい（実際の）関節角度θ１〜θ６を得ることができる。その結果、位置・姿勢に関してロボット１０を高精度に制御することができる。
【０１２７】
また、本実施形態によれば、ロボット１０をその設置場所から移動させることが必要な三次元測定機などの測定機器を使用することなく、代わりにロボット１０に取り付けられて位置・姿勢変化量を検出することができるセンサＳを使用することにより、ロボット１０の個体差を求めることができる。具体的には、位置・姿勢の精度に影響を与えうる要因をパラメータ化したものである個体差パラメータの実値を求めることができる。これにより、求めた個体差パラメータの実値に基づいて、ロボット１０を、個体差を考慮して制御することができる。その結果、位置・姿勢に関してロボット１０を高精度に制御することができる。
【０１２８】
以上、上述の実施形態を挙げて本発明を説明したが、本発明はこれに限定されない。
【０１２９】
例えば、上述の実施形態の場合、精度調整の一環として個体差が求められる対象のロボット１０は、ねじり関節と曲げ関節とを有するロボットであったが、本発明はこれに限らない。個体差を求める対象のロボットは、例えば、一方のリンクに対して他方のリンクが駆動源によって平行移動する並進関節、例えば一方のリンクの延びる方向に他方のリンクが進退する関節を有してもよい。
【０１３０】
また、上述の実施形態は、関節角度の精度調整において、図６のステップＳ１５０や図７に示すように、角度＋β回転された後のリンクＬｎを角度−２β回転させているが、本発明はこれに限らない。広義には、角度＋β回転させた後のリンクＬｎの回転角度は、図７に示すような任意の角度の実際の角度αが算出できればよい。ただし、−２βでない場合、数式４や数式５に比べて、位置・姿勢変化量を求める式が複雑になり、計算に時間がかかる可能性がある。
【０１３１】
さらに、上述の実施形態の場合、位置・姿勢を、直交座標系のＸ軸、Ｙ軸、Ｚ軸それぞれを中心とする回転の角度ＲＸ，ＲＹ，ＲＺにより表現しているが、これに限らず、オイラー角により表現してもよい。例えば、位置・姿勢を（ｘ，ｙ，ｚ，Ｏ，Ａ，Ｔ）と表現してもよい。例えば、ＯはＺ軸を中心とする回転角、ＡはＺ軸を中心として回転角Ｏ回転した後のＸ軸の回転角、ＴはＸ軸を中心として回転角Ａ回転した後のＺ軸の回転角を示している。
【０１３２】
さらにまた、上述の実施形態の場合、ロボットの固体差を求めるにあたり、該ロボット（センサ）が治具を用いて一意的な位置・姿勢にされるが、本発明はこれに限らない。
【０１３３】
例えば、一方のリンクに対して他方のリンクが無制限に回転するような関節を有していない、すなわち関節に可動域が存在するロボットの場合、治具を用いることなく、一意的な位置・姿勢にすることができる。このような可動域が存在する関節には、一方のリンクに対して他方のリンクが所定の関節角度以上に回転しないように、他方のリンクの回転を機械的に止めるストッパが設けられていることがある。したがって、全ての関節においてストッパと当接する可動域の限界までリンクを回転させると、ロボットを一意的な位置・姿勢にすることができる。
【０１３４】
加えて、上述の実施形態は、センサはツール取り付け面に取り付けられるが、本発明はこれに限らない。例えば、ロボットの所定の部分に一体的に組み込んでもよい。この場合、センサをロボットから取り外す必要がなくなる。
【０１３５】
加えてまた、上述の実施形態の場合、精度調整に関して、ユーザが関与する機会が多い。これは、位置・姿勢変化量を検出するセンサＳが、ロボット１０と独立し、これらの間のやり取りをユーザがしているからである。
【０１３６】
これに代わり、ユーザが関わる作業を極力減らし、精度調整を自動的に実行できるようにロボットを構成してもよい。
【０１３７】
例えば、まず、センサの出力信号がロボットの制御装置に入力されるようにこれらを構成する。そして、制御装置を、センサからの信号に基づいて該センサの位置・姿勢変化量を取得するように構成する。
【０１３８】
関節角度（エンコーダ）に関する精度調整においては、ロボットの関節（リンク）毎に、図７に示す、また図６のステップＳ１００で定義した任意のＸＡ−ＹＡ−ＺＡ座標系のような精度調整用の直交座標系を、例えば設計段階で予め定義しておく。
【０１３９】
また、リンク毎に、図６のステップＳ１２０の任意の角度のような、予め定義した精度調整用の直交座標系の一軸（関節の回転中心線と一致する軸を除いた軸、図７のＸＡ軸に対応）を基準とする任意の角度（最終的に実値が求められる）を予め定義しておく。
【０１４０】
さらに、リンク毎に、任意の角度の該リンクを回転させるときの第１の所定角度（図７の＋βに対応）と、第１の所定角度で回転された該リンクを回転させるときの第２の所定角度（図７の−２βに対応）とを予め定義しておく。
【０１４１】
さらにまた、リンクの回転中心線からセンサまでの距離（図７のＤｓに対応）を予め算出しておく。加えて、エンコーダを精度調整するときの該エンコーダからセンサまでの間の関節角度を決めておく（対応するリンクの回転中心線からセンサまでの距離を一定にするため）。
【０１４２】
なお、任意の角度、第１および第２の所定角度は、例えば上述のようなティーチペンダントを介してユーザによって設定可能にしてもよい。それにより、精度調整中にロボットが周りの構造物と接触しないように、ユーザが任意の角度、第１および第２の所定角度を設定することができる。
【０１４３】
加えてまた、例えばユーザがティーチングペンダントの関節角度調整ボタンを押すことなどにより、図６に示すステップＳ１２０〜Ｓ１９０と同様に、リンクを任意の角度回転し、次にリンクが任意の角度のときのエンコーダの信号値を取得し、続いて任意の角度のリンクを第１の所定角度回転し、その後第２の所定角度回転し、リンクが第２の所定角度回転したときにセンサが検出した精度調整用直交座標系の一軸方向の位置変化量を取得し、取得した位置変化量に基づいて任意の角度の実際の角度を算出し、算出した実際の角度を関節角度に換算し、換算した関節角度と取得したエンコーダの信号値が対応関係になるように記憶部に記憶されている対応関係データを修正するように、そしてこれらをセンサに近いリンク（エンコーダ）から順番に実行するようにロボットの制御装置を構成する。
【０１４４】
一方、ロボットの個体差に関する精度調整においては、図８に示すように、ロボットを一意的な位置・姿勢にセットする治具を予め該ロボットに組み付けておく。
【０１４５】
また、図９に示すように、複数の目標位置・姿勢、すなわち対応するモータの所定制御量を予め定義しておく。
【０１４６】
さらに、例えばユーザがティーチングペンダントの個体差パラメータ導出ボタンを押すことなどにより、図１０に示すステップＳ３００〜３９０と同様に、治具を介してロボットを一意的な位置・姿勢にし、モータを所定制御量で制御し、モータを所定制御量で制御したときにセンサが検出した該センサの位置・姿勢変化量を取得し、取得した位置・姿勢変化量を基準座標系換算し、その換算後の座標系を対応する目標位置・姿勢と対応付けして記憶部に記憶し、そしてこれらを複数の目標位置・姿勢それぞれについて実行するようにロボットの制御装置を構成する。
【０１４７】
さらにまた、複数の目標位置・姿勢それぞれに対応付けされて記憶されているセンサの位置・姿勢変化量を用いて個体差パラメータを未知数とする連立方程式を作成し、その連立方程式を解いて個体差パラメータの実値を算出し、算出した実値を記憶部に記憶するようにロボットの制御装置を構成する。
【０１４８】
これらにより、精度調整の一環である、関節角度の精度調整や個体差パラメータの実値の算出が自動的に実行される。
【符号の説明】
【０１４９】
ＤＳ      距離
ＥＡ      エンコーダ信号値
ΔＰＳ    位置変化量
θｎ      関節角度（変数）
α、β    関節角度（実値）
【図１】
2011036956.tif 000012
【図２】
2011036956.tif 000013
【図３】
2011036956.tif 000014
【図４】
2011036956.tif 000015
【図５】
2011036956.tif 000016
【図６】
2011036956.tif 000017
【図７】
2011036956.tif 000018
【図８】
2011036956.tif 000019
【図９】
2011036956.tif 000020
【図１０】
2011036956.tif 000021