(57)【要約】【課題】角度検出器の偏心により生じる偏心誤差を正しく補正することができる角度検出器の偏心誤差補正方法、ロボットシステムを提供する。【解決手段】角度検出器の偏心誤差補正方法では、アームの自重による回転方向への影響が抑制される少なくとも３つの測定位置において出力軸角度を検出し（Ｓ１）、測定位置におけるアーム角度値と当該測定位置において検出された出力軸角度との差分を偏心誤差として求め、各測定位置におけるアーム角度値と偏心誤差とをアームの１回転を１周期とする正弦波で近似することにより、アーム角度値と偏心誤差との関係を示す誤差曲線をアーム角度値の関数として求め（Ｓ２）、誤差曲線を用いて出力軸角度とアーム角度値とを対応付けした補正式を求め（Ｓ３）、アームを回転する際、補正式に基づいて、検出された出力軸角度に対応する補正値を求めて偏心誤差を補正する（Ｓ５）。【選択図】図３
2019018328.tif 000002
【特許請求の範囲】
【請求項１】
モータと、
前記モータの出力軸側に減速機を介して接続されたアームと、
前記モータの回転角度を入力軸角度として検出する入力軸角度検出器と、
前記アームの回転角度を出力軸角度として検出する出力軸角度検出器と、を有するロボットにおいて、前記出力軸角度検出器の偏心により生じる偏心誤差を補正する角度検出器の偏心誤差補正方法であって、
前記アームの自重による回転方向への影響が抑制される少なくとも３つの測定位置において出力軸角度を検出し、
前記測定位置におけるアーム角度値と当該測定位置において検出された出力軸角度との差分を偏心誤差として求め、
各測定位置における偏心誤差を前記アームの１回転を１周期とする正弦波で近似することにより、アーム角度値と偏心誤差との関係を示す誤差曲線を、アーム角度値の関数として求め、
誤差曲線を用いて出力軸角度とアーム角度値とを対応付けした補正式を求め、
前記アームを回転する際、補正式に基づいて、検出された出力軸角度に対応する補正値を求めて前記偏心誤差を補正することを特徴とする角度検出器の偏心誤差補正方法。
【請求項２】
前記測定位置の少なくとも１つに、前記アームの回転を機械的に規制するストッパに前記アームが上方から接触する接触位置を設定することを特徴とする請求項１記載の角度検出器の偏心誤差補正方法。
【請求項３】
前記測定位置の少なくとも１つに、前記アーム側の重心が、当該アームの回転中心の鉛直上方を含む所定の角度範囲内に位置する鉛直位置を設定することを特徴とする請求項１または２記載の角度検出器の偏心誤差補正方法。
【請求項４】
前記アームを正転させた際に検出した前記鉛直位置における出力軸角度と、正転時と同じ速さで前記アームを逆転させた際に検出した前記鉛直位置における出力軸角度との平均値を、当該鉛直位置における出力軸角度とすることを特徴とする請求項３記載の角度検出器の偏心誤差補正方法。
【請求項５】
前記アームを正転させた際に検出した複数の入力軸角度と出力軸角度との関係を近似した正転時近似線と、正転時と同じ速さで前記アームを逆転させた際に検出した複数の入力軸角度と出力軸角度との関係を近似した逆転時近似線とを求め、
前記正転時近似線から求まる前記鉛直位置における出力軸角度と、前記逆転時近似線から求まる前記鉛直位置における出力軸角度との平均値を、当該鉛直位置における出力軸角度とすることを特徴とする請求項３または４記載の角度検出器の偏心誤差補正方法。
【請求項６】
前記アームの回転中心の鉛直上方を中心とする所定の検出範囲を設定し、
前記検出範囲の上限または下限のいずれか一方まで前記アームを一旦回転させた後、前記アームを上限から下限まで回転させて所定角度ごとに出力軸角度を検出する処理と、同じ速さで前記アームを下限から上限まで回転させて所定角度ごとに出力軸角度を検出する処理とを同一回数だけ実行し、
各処理において検出した複数の出力軸角度の平均値を、前記鉛直位置における出力軸角度とすることを特徴とする請求項３または４記載の角度検出器の偏心誤差補正方法。
【請求項７】
補正式に含まれるアーム角度値の関数を、入力軸角度を前記減速機の減速比で除算して得られるアーム角度で近似することを特徴とする請求項１から６のいずれか一項記載の角度検出器の偏心誤差補正方法。
【請求項８】
モータと、
前記モータの出力軸側に減速機を介して接続されたアームと、
前記モータの回転角度を入力軸角度として検出する入力軸角度検出器と、
前記アームの回転角度を出力軸角度として検出する出力軸角度検出器と、
前記アームの自重による回転方向への影響が無い少なくとも３つの測定位置において出力軸角度を検出し、前記測定位置におけるアーム角度値と当該測定位置において検出された出力軸角度との差分を偏心誤差として求め、各測定位置における偏心誤差とを前記アームの１回転を１周期とする正弦波で近似することにより、アーム角度値と偏心誤差との関係を示す誤差曲線を求め、誤差曲線を用いて出力軸角度とアーム角度値とを対応付けした補正式を求め、前記アームを回転する際、補正式に基づいて検出された出力軸角度を補正する補正値を求めて前記偏心誤差を補正する処理を行う制御部と、
を備えることを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットに設けられている角度検出器の偏心により生じる誤差を補正する角度検出器の誤差補正方法、ロボットシステムに関する。
【背景技術】
【０００２】
従来、ロボットの関節角度の制御は、モータに取り付けた光学式エンコーダ等の角度検出器で検出した検出角度をフィードバックすることにより行われている。また、アーム先端の位置決め精度を高めるために、減速機等の伝達機構を介して接続されているアームの回転角度を直接読み取るための角度検出器がさらに取り付けられることもある。以下、モータの回転角度を検出する角度検出器を入力軸角度検出器と称し、アームの回転角度を検出する角度検出器を出力軸角度検出器と称する。
【０００３】
入力軸角度検出器は、入力軸角度を減速機の減速比で除算することにより、所定の原点に対するアームの回転角度を求めることができることから、減速比に応じた高い分解能でアームの回転角度を検出することができる。そのため、入力軸角度検出器は、検出器そのものの分解能や精度が相対的に低い場合であっても、細かな制御が可能になるという特徴がある。
【０００４】
一方、出力軸角度検出器は、減速機のバックラッシ分のずれや弾性変形によるねじれ、あるいは減速機の角度伝達誤差等の影響を受けることなく直接的にアームの回転角度を検出することが可能になるという特徴がある。
【０００５】
そのため、入力軸角度検出器と出力軸角度検出器とを設けた場合には、分解能と検出精度とを考慮して、入力軸角度検出器を主に角速度制御に用い、出力軸角度検出器を主に角度制御に用いる組み合わせが一般的に採用されている。なお、これらの角度検出器は、入力軸角度と出力軸角度との相対的なずれをねじれ角度として検出することで、制振制御や力制御に用いられることもある。
【０００６】
ただし、角度検出器には、回転中心がずれている場合つまりは角度検出器が偏心している場合には、その検出角度に誤差が生じるという問題がある。以下、角度検出器の偏心により生じる誤差を偏心誤差と称する。そのため、例えば特許文献１では、周期的な角度ごとに検出した入力軸角度と出力軸角度とに基づいて偏心誤差を補正して先端位置精度を向上させることが提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−１９４４６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ロボットの関節部分では、角度検出器の偏心だけでなく、減速機のバックラッシやアーム自重の影響による減速機の弾性変形等、入力軸角度と出力軸角度との間にずれを生じさせる要因が存在する。そのため、入力軸角度と出力軸角度とに基づいて偏心誤差のみを正確に抽出することは困難であり、偏心誤差を正しく補正することができなかった。
【０００９】
本発明は上記事情に鑑みてなされたものであり、その目的は、角度検出器の偏心により生じる偏心誤差を正しく補正することができる角度検出器の偏心誤差補正方法、ロボットシステムを提供することにある。
【課題を解決するための手段】
【００１０】
請求項１に記載した発明は、入力軸角度検出器と出力軸角度検出器とを有するロボットにおいて出力軸角度検出器の偏心により生じる偏心誤差を補正するために、まず、アームの自重による回転方向への影響が抑制される少なくとも３つの測定位置において出力軸角度を検出する。この場合、アームの自重による回転方向への影響が抑制される位置には、回転方向への影響が全く無い位置、および、回転方向への影響がほぼ無視できる程度に小さいと考えられる位置が含まれる。
【００１１】
この測定位置で検出される出力軸角度は、アームの自重の影響が抑制されていることから、出力軸角度検出器が偏心していなければ実際のアームの回転角度を示すアーム角度値に一致することになる。一方、出力軸角度検出器が偏心していればアーム角度値からずれることになるが、アームの自重の影響が抑制されていることから、出力軸角度とアーム角度値とがずれている場合には、そのずれは、出力軸角度検出器の偏心によって生じた偏心誤差であると考えられる。
【００１２】
そこで、アーム角度値と検出した出力軸角度との差分を、それぞれの測定位置における偏心誤差として求める。これにより、アーム角度値と偏心誤差との組み合わせが少なくとも３つ取得することができる。
【００１３】
さて、出力軸角度検出器が偏心している場合、出力軸角度検出器の検出位置は、アームの回転に伴って回転中心からの距離が変化するものの、アームが１回転すると同じ位置に戻ることになる。そのため、出力軸角度検出器が偏心により生じた偏心誤差もアームの１回転を１周期とする正弦波状になる。
【００１４】
そこで、各測定位置における偏心誤差を、アームの１回転を１周期とする正弦波で近似することにより、アーム角度値と偏心誤差との関係を示す誤差曲線を求めることができる。この誤差曲線を用いた場合、偏心誤差をθｅ、アーム角度値をθａとすると、偏心誤差は、アーム角度値を変数とする関数ｆを用いて簡易的に以下のように表すことができる。
θｅ＝ｆ（θａ）
【００１５】
求めた誤差曲線は、アーム角度値と偏心誤差との関係を示すものであるため、ロボットの稼動時に偏心誤差を補正するためには、稼動時に検出できる入力軸角度または出力軸角度からアーム角度値を求める必要がある。
【００１６】
このとき、上記した測定位置以外ではバックラッシや弾性変形あるいは減速機の角度伝達誤差等の誤差要因が存在するため、入力軸角度検出器で検出される入力軸角度からアーム角度値を求めると、アーム角度値に上記の誤差が含まれる可能性があり、最終的に求める補正値に誤差が生じてしまう。
【００１７】
一方、前述のように、出力軸角度検出器で検出される出力軸角度にはバックラッシや弾性変形あるいは減速機の角度伝達誤差等の誤差要因の影響を受けないため、出力軸角度からアーム角度値を求めることが望ましい。
このとき、出力軸角度はアーム角度値と偏心誤差との和として検出されることから、それらの関係は、以下のようになる。
出力軸角度＝アーム角度値＋偏心誤差
【００１８】
そして、これら２つの関係から、出力軸角度とアーム角度値との対応関係を示す補正式を、以下のように求めることができる。
出力軸角度＝アーム角度値（θａ）＋ｆ（θａ）
すなわち、ロボットの稼動時に検出される出力軸角度から、その出力軸角度に対応するアーム角度値を求めることができる。そして、出力軸角度に対応するアーム角度値が求まれば、上記した誤差曲線に基づいてその出力軸角度に対応する偏心誤差のみを抽出することができ、偏心誤差を補正することができる。
【００１９】
このように、各測定位置において出力軸角度を検出し、その測定位置におけるアーム角度値と出力軸角度との差分を偏心誤差として誤差曲線を求めることにより、アーム角度値に対応する偏心誤差を、バックラッシや弾性変形あるいは減速機の角度伝達誤差等の誤差を含まない状態で正確に抽出することができる。
【００２０】
そして、誤差曲線を用いて出力軸角度とアーム角度値とを対応付けた補正式が求まったことにより、稼動中に検出可能な出力軸角度からアーム角度値を求めることができ、アーム角度値が求まれば、そのアーム角度値に対応する偏心誤差、すなわち、出力軸角度に含まれる偏心誤差を補正するための補正値を正確に求めることができる。
したがって、角度検出器の偏心により生じる偏心誤差を正しく補正することができる。
【００２１】
また、請求項８に係る発明のように上記した処理を実行する制御部を備えるロボットシステムにおいても、角度検出器の偏心により生じる偏心誤差を正しく補正することができる。
【００２２】
補正値を正しく求めるためにはアーム自重の影響が抑制された姿勢で偏心誤差を計測する事が重要である。このとき、ストッパの位置を細かく変更すれば理論上はアーム自重の影響を受けない姿勢が無限になるものの、現実のロボットにおいてはそのような細かな変更を可能にするような構造にすることはないため、アーム自重の影響を受けない姿勢というのは現実的には有限である。
【００２３】
そのため、偏心誤差が正弦波に近似した変化を示すという点に着目すれば、アームの自重が抑制されていると考えられる３点の姿勢における偏心誤差を求めることにより、偏心誤差が正弦波に近似する変化を示すという特性に基づいて誤差曲線を生成することができることから、実際のロボットへの適用に好適となる。
【００２４】
また、偏心誤差の補正対象が出力軸角度検出器である点も重要である。出力軸角度検出器が偏心しているか否かを確認できるのは、ロボットの組付けが完了した後である。つまり、出力軸角度検出器の偏心誤差を求めることができるのは、ロボットの組付けが完了した後、換言すると、ロボットの関節がアームの自重を受ける状態になった後である。
この場合、アームの自重を受けないように例えばロボットアームを床に寝かせて調整するといったことは、ロボットが比較的重量物であることや、ロボットが傷ついたりすることに鑑みると、製造現場で現実的に行えるものではない。
【００２５】
その点、本願の方法であれば、組み付けが完了したロボットに対して誤差曲線を求めたり補正値を求めたりすることが可能となるため、ロボットの製造現場において現実的に実施可能であるというメリットがあるとともに、ロボットの設置現場においても誤差曲線を求めたり補正値を求めたりすることができるようになり、極めて効果的である。
【００２６】
請求項２に記載した発明は、測定位置の少なくとも１つに、アームの回転を機械的に規制するストッパにアームが上方から接触する接触位置を設定する。ストッパは、ロボットに機械的に取り付けられることから、その位置が固定されており、アームの回転中心との機械的な位置関係も定まっている。また、接触位置では、アーム側の自重がストッパによって支えられるため、アーム側の自重により検出角度に誤差が生じることもない。
【００２７】
そのため、アームが接触位置にある場合には、アーム角度値を、ストッパの位置やアームの外形寸法等から機械的に特定することができる。したがって、測定位置として接触位置を設定することにより、出力軸角度検出器の偏心に起因する偏心誤差のみを抽出することができる。
【００２８】
請求項３に記載した発明は、測定位置の少なくとも１つに、アーム側の重心が、アームの回転中心の鉛直上方を含む所定の角度範囲内に位置する鉛直位置を設定する。アームが鉛直位置に位置している場合には、減速機には回転方向に力が加わらないことから弾性変形がない状態、あるいは、回転方向に加わる力が微小であることから弾性変形が無視できる程度に小さい状態であると考えられる。
【００２９】
そのため、鉛直位置では、入力軸と出力軸とがほぼ一致した状態になっていると考えられ、その場合には、検出した入力軸角度からアーム角度値を高い精度で求めることができると考えられる。
したがって、測定位置として鉛直位置を設定することにより、出力軸角度検出器の偏心に起因する偏心誤差のみを抽出することができる。また、鉛直位置では、例えばアームを真っ直ぐ伸ばした状態であればアームの向きがほぼ鉛直方向になることから、アーム角度値を機械的に特定することもできる。
【００３０】
請求項４に記載した発明は、アームを正転させた際に検出した鉛直位置における出力軸角度と、正転時と同じ速さでアームを逆転させた際に検出した鉛直位置における出力軸角度との平均値を、鉛直位置における出力軸角度とする。
【００３１】
モータを制御してアームを一定速度で正転および逆転した場合、出力軸は入力軸に引きずられた形で回転することから、出力軸と入力軸との間にねじれが生じ、アームを正転させた場合に検出された出力軸角度と逆転させた場合に検出された出力軸角度との間にずれが生じるおそれがある。
【００３２】
一方、同じ速さでアームを回転させれば、正転時と逆転時とで同じ大きさのねじれが生じることになるため、正転時と逆転時との平均を出力軸角度とすることにより、ねじれの影響を排除した状態の出力軸角度に基づいて補正値を求めることができ、補正値の精度を向上させることができる。
【００３３】
請求項５に記載した発明は、アームを正転させた際に検出した複数の入力軸角度と出力軸角度との関係を近似した正転時近似線と、正転時と同じ速さでアームを逆転させた際に検出した複数の入力軸角度と出力軸角度との関係を近似した逆転時近似線とを求め、正転時近似線から求まる鉛直位置における出力軸角度と、逆転時近似線から求まる鉛直位置における出力軸角度との平均値を、当該鉛直位置における出力軸角度とする。
【００３４】
例えば減速機として波動歯車装置を用いる場合、角度検出器の検出値には、入力軸角度から求めた出力軸角度が理論値からずれることによる角度伝達誤差が生じるおそれがある。このため、鉛直位置で１回検出した出力軸角度を用いて補正を行うと、角度伝達誤差が含まれてしまう。そこで、正転時近似線から求まる出力軸角度と逆転時近似線から求まる出力軸角度との平均値を鉛直位置における出力軸角度とすることにより、角度伝達誤差の影響を抑制した状態で出力軸角度を求めることができ、補正値の精度を向上させることができる。
【００３５】
請求項６に記載した発明は、アームの回転中心の鉛直上方を中心とする検出範囲を設定し、検出範囲の上限または下限のいずれか一方までアームを一旦回転させた後、アームを上限から下限まで回転させて所定角度ごとに出力軸角度を検出する処理と、同じ速さで前記アームを下限から上限まで回転させて所定角度ごとに出力軸角度を検出する処理とを同一回数だけ実行し、各処理において検出した複数の出力軸角度の平均値を、鉛直位置における出力軸角度とする。
【００３６】
例えば減速機として波動歯車装置を用いる場合、角度検出器の検出値には、上記した角度伝達誤差が含まれるおそれがあるそこで、アームを正転および逆転させ、検出範囲の上限から下限までの間で複数の出力軸角度を検出する。
【００３７】
この場合、検出範囲はアームの回転中心の鉛直上方を中心として設定されていることから、また、アームを正転および逆転させていることから、検出した複数の出力軸角度の総平均値を鉛直位置における出力軸角度として扱うことができる。そして、角度伝達誤差の影響を抑制した状態で出力軸角度を求めることができることから、補正値の精度を向上させることができる。
【００３８】
請求項７に記載した発明は、補正式を用いて出力軸角度からアーム角度値を求める際、補正式に含まれるアーム角度値の関数を、入力軸角度を減速機の減速比で除算して得られるアーム角度で近似する。
【００３９】
上記した補正式は、アーム角度値（θａ）と関数ｆ（θａ）との和として示される非線形式であり、検出された出力軸角度からアーム角度値を求めることが難しく、また、演算負荷が大きくなったり演算時間が長くなったりするおそれがある。
そこで、関数ｆ（θａ）について、アーム角度値（θａ）をアーム角度（θａｉ）で代用することにより、補正式を簡素化する。実際のロボットにおいては、アーム角度値（θａ）とアーム角度（θａｉ）とのずれはごく小さいものと想定されるため、アーム角度（θａｉ）を代用した場合であっても、アーム角度値（θａ）を用いた場合と同程度の精度になると考えられる。
【００４０】
そして、アーム角度（θａｉ）を代用することにより、演算負荷を大きく低減することができる。これにより、ロボットを稼動時に補正式を用いて演算を行っても、アーム角度値や補正値を容易且つ制御に影響を与えるような遅延を生じさせることなく求めることができる。
【図面の簡単な説明】
【００４１】
【図１】第１実施形態によるロボットシステムの構成を模式的に示す図
【図２】ロボットの関節部の概略を模式的に示す図
【図３】偏心誤差を補正する処理の流れを示す図
【図４】鉛直位置を模式的に示す図
【図５】鉛直位置における出力軸角度のずれを模式的に示す図
【図６】アーム角度値と出力軸角度との関係の一例を示す図
【図７】アーム角度値と偏心誤差との関係の一例を示す図
【図８】第２実施形態による角度伝達誤差が含まれた出力軸角度を求める手法の一例を示す図その１
【図９】角度伝達誤差が含まれた出力軸角度を求める手法の一例を示す図その２
【図１０】接触位置を増やす構成の一例を模式的に示す図
【発明を実施するための形態】
【００４２】
以下、複数の実施形態について図面を参照しながら説明する。なお、各実施形態において実質的に共通する部位には同一符号を付して説明する。
（第１実施形態）
以下、第１実施形態について、図１から図７を参照しながら説明する。
図１に示すように、本実施形態のロボットシステム１は、いわゆる垂直多関節型のロボット２と、そのロボット２を制御するコントローラ３とを備えている。
【００４３】
ロボット２は、ベース２ａ上に、鉛直方向に設定された回転軸を介してベース２ａに接続されているショルダ２ｂが、水平方向に回転可能に連結されている。ショルダ２ｂには、水平方向に設定された回転軸を介して第１アーム２ｃの一端が、垂直方向に回転可能に連結されている。この第１アーム２ｃの他端側には、水平方向に設定された回転軸を介して第２アーム２ｄの一端が、垂直方向に回転可能に連結されている。そして、第２アーム２ｄの他端側には、第２アーム２ｄに対して相対的に回転可能なツール２ｅが連結されている。
【００４４】
また、ロボット２には、例えば第１アーム２ｃの可動範囲を機械的に規定するストッパ４が設けられている。このストッパ４は、メカエンドとも称されるものであり、本実施形態では、第１アーム２ｃを図示反時計回りに回転させた際の可動範囲を規定する第１ストッパ４Ａと、第１アーム２ｃを図示時計回りに回転させた際の可動範囲を規定する第２ストッパ４Ｂとが設けられている。これらのストッパ４は、取り付け穴（図１０参照）に着脱可能あるいは固定的に設けられている。以下、図１において図示時計回りへの回転を正転と称し、図示反時計回りへの回転を逆転と称する。
【００４５】
第１ストッパ４Ａは、第１アーム２ｃの回転中心（Ｊ１）の鉛直上方を示す鉛直線（Ｌｖ）よりも逆転側となる位置に設けられている。このため、第１ストッパ４Ａは、第１アーム２ｃが接触した状態では、第１アーム２ｃを下方側から支持することになる。換言すると、第１アーム２ｃは第１ストッパ４Ａに上方側から接触するとともに、第１アーム２ｃが第１ストッパ４Ａに接触している状態においては、第１アーム２ｃ側の重量つまりは第１アーム２ｃを含むロボット２の先端側の重量は、第１ストッパ４Ａによって支えられている。以下、第１アーム２ｃ側の重量のようにロボット２の関節部に加わる重量を便宜的にアーム自重と称する。
【００４６】
第２ストッパ４Ｂは、鉛直線（Ｌｖ）よりも正転側となる位置に設けられている。このため、第２ストッパ４Ｂは、第１アーム２ｃが接触した状態では、第１アーム２ｃを下方側から支持することになる。換言すると、第１アーム２ｃは第２ストッパ４Ｂに上方側から接触するとともに、第１アーム２ｃが第２ストッパ４Ｂに接触している状態においては、アーム自重は、第２ストッパ４Ｂによって支えられている。
【００４７】
さて、ロボット２は、図２に示すように、例えばショルダ２ｂと第１アーム２ｃとを連結している関節部に、第１アーム２ｃを駆動するモータ５、モータ５の出力軸に接続されている伝達機構としての減速機６、モータ５の回転角度を検出する入力軸角度検出器７、アームの回転角度を検出する出力軸角度検出器８等が設けられている。
モータ５は、例えばステッピングモータで構成されている。減速機６は、本実施形態では波動歯車装置により構成されている。
【００４８】
入力軸角度検出器７および出力軸角度検出器８は、回転ディスクと光学検出器とを有する周知のエンコーダにより構成されている。以下、入力軸角度検出器７の検出値を入力軸角度と称し、出力軸角度検出器８の検出値を出力軸角度と称するとともに、それらを総称して検出角度とも称する。なお、検出角度は、アームの正転方向を正方向とする。
【００４９】
この場合、入力軸角度検出器７の回転中心をＪｉとし、出力軸角度検出器８の回転中心をＪｏとすると、第１アーム２ｃの場合には、入力軸角度検出器７の回転中心（Ｊｉ）、より厳密に言えば減速機６の出力軸の回転中心が第１アーム２ｃの回転中心（Ｊ１）になる。そして、第１アーム２ｃの回転中心（Ｊ１）と出力軸角度検出器８の回転中心（Ｊｏ）との位置のずれが、出力軸角度検出器８の偏心に相当する。
【００５０】
コントローラ３は、図示しないマイクロコンピュータ等で構成された制御部３ａを有しており、ロボット２の姿勢や動作を制御する。例えば、制御部３ａは、モータ５に取り付けている入力軸角度検出器７で検出した入力軸角度をフィードバックすることにより、各関節部のモータ５を駆動してロボット２の姿勢を制御する。また、制御部３ａは、ツール２ｅを駆動してワークの把持等の動作を制御する。また、制御部３ａは、後述するように出力軸角度検出器８の回転中心のずれに起因する誤差、つまりは、出力軸角度検出器８の偏心により生じる偏心誤差を補正する処理を実行する。
【００５１】
次に上記した構成の作用について説明する。
前述のように、角度検出器は、自身の回転中心とアームの回転中心との位置がずれて偏心している場合には、検出角度に誤差が生じるという問題がある。このとき、出力軸角度検出器８の偏心誤差を補正することができれば、アームの回転角度の検出精度を向上させることができると考えられる。
【００５２】
このとき、いずれの誤差要因も存在していなければ、入力軸角度に基づいてアームの回転角度を求めることができると考えられる。しかし、ロボット２の関節部に設けられている角度検出器の場合、偏心誤差以外にも、入力軸角度と実際のアームの回転角度を示すアーム角度値との間に誤差が生じる要因が存在する。具体的には、図２に示すように、ロボット２の関節部分においては、入力軸角度（θｉ）に対して、バックラッシ分のずれ（Ｄ１）、および弾性変形分のずれ（Ｄ２）が生じる可能性がある。なお、図２では説明のために、それぞれのずれを意図的に拡大して示している。
【００５３】
このうち、弾性変形分のずれは、アーム自重が回転方向に影響を与えることによって生じるものであるため、ロボット２の姿勢つまりはアームの回転角度に応じて大きさが変化する。そのため、単純に入力軸角度（θｉ）からアームの実際の回転角度を求めることができず、入力軸角度（θｉ）と出力軸角度（θｏ）との差分であるねじれ角度から偏心誤差のみを正確に抽出することは困難である。
【００５４】
この場合、アーム自重の影響を抑えるために、ロボット２を組み立てる前の段階で関節部分の偏心を計測しておく手法が考えられる。しかし、そのような手法は、出力軸角度検出器８はアーム側に取り付けられるため組み立て誤差によって偏心自体がずれる可能性があること、また、組み立て誤差が生じないように作業することは難しく生産性が著しく低下するおそれがあること等を考慮すると、実用的とは言い難い。
【００５５】
また、減速機６の剛性やアームの剛性等、設計上の特性に基づいてアーム自重の影響を推定して補正する手法も考えられる。しかし、そのような手法は、設計上の特性と実際の特性とが異なるおそれがあること、また、減速機６の個体ごとの特性を同定することが困難であることから、補正値に誤差が含まれてしまうおそれがあり、正確に補正することは難しいと考えられる。
【００５６】
さらに、偏心誤差の補正対象が出力軸角度検出器８である点も重要である。出力軸角度検出器８が偏心しているか否かを確認できるのは、ロボット２の組付けが完了した後である。つまり、出力軸角度検出器８の偏心誤差を求めることができるのは、ロボット２の組付けが完了した後、換言すると、ロボット２の関節がアームの自重を受ける状態になった後である。この場合、アームの自重を受けないように例えばロボットアームを床に寝かせて調整するといったことは、ロボット２が比較的重量物であることや、ロボット２が傷ついたりするおそれがあることに鑑みると、製造現場で現実的に行えるものではない。
【００５７】
そこで、本実施形態では、以下のようにして、出力軸角度検出器８の偏心による偏心誤差を正しく補正する。以下、第１アーム２ｃに設けられている出力軸角度検出器８の偏心誤差を補正する例について説明するが、他のアームについても同様の考え方で補正することができる。また、入力軸角度検出器７については、偏心等の補正や原点合わせ等の調整が既に行われているものとする。なお、入力軸角度検出器７の調整は、偏心の補正については一般的にモータ５単体で実施することができ、原点合わせについてはストッパ４にアームを当てること等により実施することができる。
【００５８】
図３は、本実施形態による偏心誤差補正方法における処理の全体的な流れを示している。以下、第１アーム２ｃを例として説明する。また、以下の処理は、本実施形態ではコントローラ３の制御部３ａによって実行されるものとする。なお、詳細は後述するが、図３に示すステップＳ１〜Ｓ３は例えばティーチング作業時等、ロボット２が実際の作業を行っていない非稼動時に行われる処理であり、ステップＳ４は非稼動時あるいはロボット２が実際に作業を行っている稼動時に行うことができる処理であり、ステップＳ５は稼動時に行われる処理である。また、ステップＳ４は、省略することもできる。
【００５９】
まず、コントローラ３は、各測定位置における検出角度、つまりは入力軸角度と出力軸角度とを取得する（Ｓ１）。本実施形態では、測定位置として、アームの自重による回転方向への影響が無い位置を含む少なくとも３つの位置を設定している。この場合、アームの自重による回転方向への影響が無い位置には、回転方向への影響が全く無い位置、および、回転方向への影響がほぼ無視できる程度に小さいと考えられる位置も含まれる。
【００６０】
本実施形態絵は、測定位置として、第１アーム２ｃが各ストッパ４に接触する２つの接触位置、および、アーム自重の重心が回転中心の鉛直上方を含む所定の範囲内に位置する１つの鉛直位置の合計３つを設定している。
【００６１】
このうち接触位置は、第１アーム２ｃが第１ストッパ４Ａに上方側から接触する位置（Ｐｍ１。図６参照）と、第１アーム２ｃが第２ストッパ４Ｂに上方側から接触する位置（Ｐｍ２。図６参照）である。このとき、第１アーム２ｃを接触位置まで回転させる際には、モータ５を駆動して第１アーム２ｃを回転させることもできるし、作業者の手で第１アーム２ｃを回転させることもできる。
【００６２】
この接触位置は、各ストッパ４の位置が機械的に定まっていることから、第１アーム２ｃがストッパ４に接触している状態の回転角度、つまりは、接触位置におけるアーム角度値をロボット２の機械的な設計値に基づいて特定することができる位置である。また、接触位置ではアーム自重がストッパ４によって支えられるため、アーム側の自重により出力軸側に誤差が生じることもない。そのため、接触位置は、出力軸角度検出器８の偏心に起因する偏心誤差のみを抽出できる位置であると言える。また、接触位置は、アームの回転角度を機械的な設計値に基づいて推定できる位置、および、アームの自重による回転方向への影響が無い位置に該当する。
【００６３】
一方、鉛直位置は、補正対象のアームが例えば第１アーム２ｃであれば、図４に示すように、第１アーム２ｃ側の重心（Ｇ）が鉛直線（Ｌｖ）上、あるいは、鉛直線（Ｌｖ）を含む所定の角度範囲（α）内となる位置（Ｐｇ。図６参照）である。
【００６４】
このとき、ロボット２の重心（Ｇ）は、ロボット２の姿勢に基づいて大まかに特定することができるし、例えば各アームが真っ直ぐに伸ばされている状態等であれば、作業者が目視にて大まかに把握することもできる。また、重心（Ｇ）を鉛直位置まで移動させる際には、入力軸角度をフィードバックすることでモータ５を駆動して重心（Ｇ）が鉛直位置にくるように制御することもできる。あるいは、重心（Ｇ）を把握できているのであれば、作業者が手で第１アーム２ｃを回転させることにより目視にて重心（Ｇ）が概ね鉛直位置にくるようにすることもできる。
【００６５】
また、角度範囲（α）は、弾性変形分のずれが概ね等しい考えられる範囲として設定される。この角度範囲（α）は、モータ５を駆動して制御する場合には、入力軸角度を基準として設定することができる。あるいは、角度範囲（α）は、作業者が手で第１アーム２ｃを回転させる場合には、重心（Ｇ）が第１アーム２ｃの回転中心（Ｊ）の鉛直上方となるように目視にて設定することもできる。つまり、鉛直位置は、アームの自重による回転方向への影響が無い位置、および、アームの自重による回転方向への影響がほとんど無いと予想される位置に該当する。
【００６６】
さて、鉛直位置は、減速機６には鉛直下方への力は加わるものの回転方向への力は加わらない、あるいは、無視できる程度に小さいと予想されることから、減速機６には弾性変形分のずれが生じない状態となる。
ただし、鉛直位置では、接触位置とは異なり、出力軸角度に影響を与える別の要因が存在する。モータ５を制御してアームを一定速度で正転および逆転した場合、出力軸は入力軸に引きずられた形で回転することから、出力軸側と入力軸側との間にねじれが生じることになる。
【００６７】
その結果、アームを正転させた場合に検出された出力軸角度と逆転させた場合に検出された出力軸角度との間にずれが生じる。
そのため、本実施形態では、図５に示すように、鉛直位置の入力軸角度がθｇであったとすると、第１アーム２ｃを正転させて鉛直位置に到達した場合における出力軸角度（θｆ）と、正転時と同じ速さで第１アーム２ｃを逆転させて鉛直位置に到達した場合における出力軸角度（θｂ）とを検出し、その平均値を鉛直位置における出力軸角度（θｏｕｔ）としている。
【００６８】
同じ速さで第１アーム２ｃを回転させれば正転時と逆転時とで同じ大きさのねじれが生じることになるため、正転時と逆転時との平均を取ることにより、ねじれの影響を排除した状態で補正値を求めることができるようになる。つまり、鉛直位置では、回転方向への力をほぼ無視できることから、入力軸角度を減速機６の減速比で除算した値をアーム角度値として用いることができる。また、バックラッシ分のずれが逆向きになるため、バックラッシ分のずれも打ち消した状態でアーム角度値を求めることができる。
【００６９】
このように、鉛直位置は、出力軸角度検出器８の偏心に起因する偏心誤差のみを抽出できる位置であると言える。なお、出力軸角度が補正される前であることから精度は若干低下するものの、正転と逆転とで同じ出力軸角度における入力軸角度の平均値を求めてアーム角度値とすることもできる。
【００７０】
各測定位置において入力軸角度および出力軸角度を検出すると、コントローラ３は、図３に示すように誤差曲線（Ｌｅ）を求める（Ｓ２）。このとき、出力軸角度検出器８が偏心していなければ、出力軸角度はアーム角度値に一致するはずであり、その場合には、アーム角度値と出力軸角度との関係は、図６に仮想線（Ｌｔ）にて示すように、正比例の関係になる。
【００７１】
これに対して、出力軸角度検出器８が偏心している場合には、その偏心によって生じる誤差の分だけ出力軸角度が仮想線（Ｌｔ）からずれることになるため、そのずれを、出力軸角度検出器８の偏心によって生じた偏心誤差として扱うことができる。なお、アーム自重が回転方向に影響を与える位置では、減速機６におけるねじれ分が推定できないことから上記の考え方を適用することができず、入力軸角度からアーム角度値を求めることは困難である。
【００７２】
さて、各測定位置におけるアーム角度値および出力軸角度が、接触位置（Ｐｍ１）において（θａ１，θｏ１）であり、接触位置（Ｐｍ２）において（θａ２，θｏ２）であり、鉛直位置（Ｐｇ）において（θａｇ，θｏｕｔ）であったとする。
【００７３】
このとき、上記したように仮想線（Ｌｔ）と出力軸角度との差分が偏心誤差であることから、コントローラ３は、図６に示すアーム角度値と出力軸角度との関係を、図７に示すようにアーム角度値と偏心誤差との関係に変換する。なお、変換に際しては、後述するオフセット（Ｂ）により調整できるため、例えばいずれかの測定位置を原点や横軸の零点とする態様で変換することもできる。
【００７４】
ここで、出力軸角度検出器８の偏心誤差は、アームの１回転を１周期とする正弦波状になることが知られている。これは、出力軸角度検出器８の回転中心（Ｊｏ）が第１アーム２ｃの回転中心（Ｊ）からずれている場合には、光学検出器による検出位置が、第１アーム２ｃの回転にともなって変化するとともに１回転すると同じ位置に戻るためである。
【００７５】
そのため、アーム角度値（θａ）と偏心誤差（θｅ）との関係を示す誤差曲線（Ｌｅ）は、図７に示す各測定位置を通るような正弦波で近似することができ、以下の（１）式のように求めることができる。
θｅ＝Ａ（ｓｉｎ（θａ＋φ））＋Ｂ      ・・・（１）
【００７６】
さて、（１）式のうち、未知数は、振幅（Ａ）、位相（φ）およびオフセット（Ｂ）の３つであるが、上記したように３つの測定位置におけるアーム角度値（θａ）と偏心誤差（θｅ）とが求まっていることから、各測定位置におけるアーム角度値（θａ）と偏心誤差（θｅ）とを（１）式に代入することにより、振幅（Ａ）、位相（φ）およびオフセット（Ｂ）の各未知数が特定され、誤差曲線（Ｌｅ）を求めることができる。
【００７７】
この誤差曲線は、アーム角度値（θａ）と偏心誤差（θｅ）との関係を示すものであるため、ロボット２の稼動中に偏心誤差を求めるためには、稼動中に検出できるいずれかの検出角度からアーム角度値を特定する必要がある。ただし、アーム自重の影響があることから、入力軸角度に基づいてアーム角度値を特定することは困難である。
【００７８】
そこで、本実施形態では、出力軸角度に基づいてアーム角度値を特定する。（１）式に示す偏心誤差（θｅ）は、上記したように出力軸角度（θｏ）と偏心が無いと仮定した場合におけるアーム角度値（θａ）との差分であるため、それらの関係は、以下の（２）式で表すことができる。
θｏ＝θａ＋θｅ      ・・・（２）
【００７９】
これら（１）式および（２）式から偏心誤差（θｅ）を消去すると、出力軸角度（θｏ）とアーム角度値（θａ）との関係が、以下の（３）式のように求まる。この（３）式は、誤差曲線を用いて出力軸角度とアーム角度値とを対応付けした補正式に相当する。
θｏ＝θａ＋（Ａ（ｓｉｎ（θａ＋φ））＋Ｂ）      ・・・（３）
【００８０】
この（３）式から明らかなように、出力軸角度を検出すれば、その出力軸角度に対応するアーム角度値（θａ）を求めることができる。そして、アーム角度値（θａ）が求まれば、（１）式に基づいて、偏心誤差つまりは出力軸角度検出器８の偏心による誤差を補正するための補正値を求めることができる。
【００８１】
これにより、ロボット２の稼動中に出力軸角度を検出する際、検出した出力軸角度に含まれる偏心誤差を正しく求めることができるとともに、その偏心誤差を補正値として用いることにより、偏心誤差を正確に補正することができる。なお、一見すると（３）式からは複数のアーム角度値の候補が解として求まるように見えるが、実際のロボット２においては偏心誤差の振幅は非常に小さいことが予想されるため、実用上、複数解への考慮は不要であると考えられる。
【００８２】
ところで、（３）式は非線形であることから、直接的にアーム角度値（θａ）を求めることが難しく、ロボット２の稼動時に演算を行うと、演算負荷が増大したり処理速度が低下したりするおそれがある。
【００８３】
そこで、コントローラ３は、図３に示すように補正の準備を行う（Ｓ４）。この補正の準備では、アーム角度値（θａ）あるいは補正値そのものを直接的あるいは補間等により間接的に特定可能な参照テーブルや、ロボット２の稼動中にアーム角度値（θａ）あるいは補正値そのものを遅延無く求めることができる程度の例えばｎ次多項式で（３）式を近似した近似式を生成する等の処理が行われる。
【００８４】
つまり、コントローラ３は、ステップＳ４において、補正値を効率的に求めるための下準備を行っている。なお、参照テーブルは、ダミー値を代入して複数点の値を求め、各値の間を補間する直線あるいは曲線を求めること等により生成することができる。なお、この補正の準備としては、上記した参照テーブルやｎ次多項式以外の手法を採用することもできる。また、（３）式から直接的にアーム角度値（θａ）を求めることも可能であるため、ステップＳ４を省略し、ロボット２の稼動中に（１）式と（３）式とに基づいてアーム角度値（θａ）や補正値を求めることも可能である。
【００８５】
補正の準備を終了あるいは省略すると、コントローラ３は、主としてロボット２の稼動中に、補正値を求めて偏心誤差を補正する（Ｓ５）。具体的には、コントローラ３は、ロボット２の稼動中において、例えば第１アーム２ｃの回転に伴って変化する出力軸角度をその都度検出する。そして、コントローラ３は、検出された出力軸角度に対応するアーム角度値あるいは補正値そのものを上記した参照テーブルやｎ次多項式を用いて間接的に、あるいは、（１）式と（３）式とから直接的に求め、求めたアーム角度値に対応する偏心誤差を補正値として、出力軸角度に含まれる偏心誤差を補正する。
【００８６】
このように、本実施形態では、アームの回転角度を機械的な設計値に基づいて推定できる位置、アームの自重による回転方向への影響が無い位置、および、アームの自重による回転方向への影響がほとんど無いと予想される位置のいずれか１つ以上に該当する少なくとも３つの測定位置における偏心誤差を検出することに基づいて、出力軸角度検出器８の偏心によって生じた偏心誤差を補正している。
【００８７】
以上説明した実施形態によれば、次のような効果を得ることができる。
実施形態では、アームの自重による回転方向への影響が無い少なくとも３つの測定位置において出力軸角度を検出し、測定位置におけるアーム角度値と当該測定位置において検出された出力軸角度との差分を偏心誤差として求める。続いて、各測定位置におけるアーム角度値と偏心誤差とをアームの１回転を１周期とする正弦波で近似することによりアーム角度値と偏心誤差との関係を示す誤差曲線を求め、誤差曲線を用いて出力軸角度とアーム角度値とを対応付けした補正式を求める。
【００８８】
続いて、アームを回転する際、検出された出力軸角度に対応するアーム角度値を補正式に基づいて求め、求めたアーム角度値に対応する偏心誤差を補正値として補正曲線に基づいて求めることにより、偏心誤差を補正する。このとき、測定位置で検出される出力軸角度は、アームの自重の影響が抑制あるいは排除されていることから、出力軸角度とアーム角度値とがずれている場合には、そのずれは、出力軸角度検出器８の偏心によって生じた偏心誤差であると考えられる。
【００８９】
そして、出力軸角度検出器８の偏心により生じる偏心誤差はアームの１回転を１周期とする正弦波状になることが知られているため、各測定位置におけるアーム角度値と偏心誤差とをアームの１回転を１周期とする正弦波で近似することにより、アーム角度値と偏心誤差との関係を示す誤差曲線を求めることができる。
【００９０】
このとき、求めた誤差曲線は、アーム角度値と偏心誤差との関係を示すものであるため、ロボット２の稼動時に偏心誤差を補正できるようにするために、出力軸角度とアーム角度値とを対応付けた補正式を定義し、ロボット２の稼動時に検出された出力軸角度からその出力軸角度に対応するアーム角度値を求め、そのアーム角度値に対応する補正値を用いて偏心誤差を補正する。これにより、アーム角度値に対応する偏心誤差を正確に抽出できるようになる。
【００９１】
この場合、バックラッシや弾性変形あるいは減速機６の角度伝達誤差等の影響を受けない出力軸角度に基づいているため正確に補正値を求めることができるとともに、出力軸角度はロボット２の稼動時に検出可能であるためロボット２の稼動時に補正を行うことができる。したがって、角度検出器の偏心により生じる偏心誤差を正しく補正することができる。
【００９２】
実施形態では、測定位置の少なくとも１つに、アームの回転を機械的に規制するストッパ４にアームが上方から接触する接触位置を設定する。ストッパ４は、ロボット２に機械的に取り付けられることから、その位置が固定されており、アームの回転中心との機械的な位置関係も定まっている。また、接触位置では、アーム側の自重がストッパ４によって支えられるため、アーム側の自重により検出角度に誤差が生じることもない。
【００９３】
そのため、アームが接触位置にある場合には、アーム角度値を、ストッパ４の位置やアームの外形寸法等から機械的に特定することができる。したがって、測定位置として接触位置を設定することにより、出力軸角度検出器８の偏心に起因する偏心誤差のみを抽出することができる。
【００９４】
実施形態では、測定位置の少なくとも１つに、アーム側の重心が、アームの回転中心の鉛直上方を含む所定の角度範囲内に位置する鉛直位置を設定する。アームが鉛直位置に位置している場合には、減速機６には回転方向に力が加わらないことから弾性変形がない状態、あるいは、回転方向に加わる力が微小であることから弾性変形が無視できる程度に小さい状態であると考えられる。
【００９５】
そのため、鉛直位置では、入力軸と出力軸とがほぼ一致した状態になっていると考えられ、その場合には、検出した入力軸角度からアーム角度値を高い精度で求めることができると考えられる。したがって、測定位置として鉛直位置を設定することにより、出力軸角度検出器８の偏心に起因する偏心誤差のみを抽出することができる。また、鉛直位置では、例えばアームを真っ直ぐ伸ばした状態であればアームの向きがほぼ鉛直方向になることから、アーム角度値を機械的に特定することもできる。
【００９６】
実施形態では、アームを正転させた際に検出した鉛直位置における出力軸角度と、正転時と同じ速さでアームを逆転させた際に検出した鉛直位置における出力軸角度との平均値を、鉛直位置における出力軸角度とする。同じ速さでアームを回転させれば、正転時と逆転時とで同じ大きさのねじれが生じることになるため、正転時と逆転時との平均を出力軸角度とすることにより、ねじれの影響が排除された状態の出力軸角度に対応する補正値を求めることができ、補正値の精度を向上させることができる。
【００９７】
上記した処理を実行する制御部３ａをロボットシステム１によっても、同様の効果を得ることができる。また、現実のロボット２においてはストッパ４の位置を細かく変更可能にすることは少ないため、アーム自重の影響を受けない姿勢というのは現実的には有限である。そのため、３つの測定位置における偏心誤差を求め、その偏心誤差が正弦波に近似する変化を示すという特性に基づいて誤差曲線を生成することにより、実際のロボット２へ現実的に適用することができるようになる。
【００９８】
出力軸角度検出器８の偏心誤差を求めることができるのは、ロボット２の組付けが完了した後、換言すると、ロボット２の関節がアームの自重を受ける状態になった後であるが、上記の方法によれば、組み付けが完了したロボット２に対して誤差曲線を求めたり補正値を求めたりすることが可能となるため、ロボット２の製造現場において現実的に実施可能であるというメリットがあるとともに、ロボット２の設置現場においても誤差曲線を求めたり補正値を求めたりすることができるようになり、極めて有用である。
【００９９】
（第２実施形態）
以下、第２実施形態について、図８から図１０を参照しながら説明する。第２実施形態では、実際のロボット２に有効な幾つかの手法について説明する。ただし、ロボット２の構成や処理の流れは第１実施形態と共通するので、必要に応じて図１から図７も参照して説明する。また、以下では、鉛直位置における出力軸角度の検出精度を向上させるための２つ手法と、測定位置を増加させて精度を向上させるための１つの手法について個別に説明する。
【０１００】
＜鉛直位置における出力軸角度の検出精度を向上させる手法その１＞
上記した第１実施形態で説明したように、ロボット２は、減速機６として波動歯車装置を採用することがある。この波動歯車装置は、実際に駆動する際に角度伝達誤差が顕著に生じることが知られている。ここで角度伝達誤差とは、入力軸角度を減速機６の減速比で除算して求めた出力軸角度が理論値からずれることにより生じる誤差であり、出力軸側の１回転に対して、減速比の整数倍の周波数で生じることが知られている。
【０１０１】
そのため、アーム重心が鉛直線（Ｌｖ）上となる鉛直位置付近で入力軸角度を制御して一定速度で正転および逆転した場合、出力軸が入力軸に引きずられた形になることに加えて、角度伝達誤差が生じることにより、図８に示すように、出力軸角度に細かな振動が重畳する。なお、図８では、正転時に角度伝達誤差が重畳した状態で検出された出力軸角度の一例を正転時検出角度として示し、逆転時に角度伝達誤差が重畳した状態で検出された出力軸角度の一例を逆転時検出角度として示している。
【０１０２】
このため、入力軸角度がθｇとなる鉛直位置において検出される出力軸角度は、アームを正転させた状態であっても、角度伝達誤差によって異なる値が検出される可能性がある。これは、アームを正転させた場合も同様である。その結果、鉛直位置の付近でアームを正転および逆転させて出力軸角度を検出する場合、角度伝達誤差分のずれが生じ、補正値の精度が低下するおそれがある。
【０１０３】
そこで、本実施形態では、正転時検出角度つまりはアームを正転させた際に検出した複数の入力軸角度と出力軸角度との関係を直線で近似した正転時近似線（Ｌｆ）と、逆転時検出角度つまりは正転時と同じ速さでアームを逆転させた際に検出した複数の入力軸角度と出力軸角度との関係を直線で近似した逆転時近似線（Ｌｂ）とを求める。
【０１０４】
そして、正転時近似線（Ｌｆ）から求まる鉛直位置（入力軸角度＝θｇ）における出力軸角度（θｆ）と、逆転時近似線（Ｌｂ）から求まる鉛直位置における出力軸角度（θｂ）との平均値を、鉛直位置における出力軸角度（θｏｕｔ）とする。あるいは、正転時近似線（Ｌｆ）と逆転時近似線（Ｌｂ）との平均となる平均値近似線（Ｌｏｕｔ）を求め、鉛直位置において平均値近似線（Ｌｏｕｔ）上の値を出力軸角度（θｏｕｔ）とすることもできる。
【０１０５】
このように正転時近似線（Ｌｆ）および逆転時近似線（Ｌｂ）に基づいて出力軸角度を求めることにより、角度伝達誤差の影響を抑制することができる。
このとき、各近似線を求める際の鉛直位置の近傍の範囲は、入力軸角度に基づいて、例えばθｇ−Ｘ≦近傍の範囲≦θｇ＋Ｘの角度範囲として設定することができる。
【０１０６】
この場合、Ｘが小さすぎると近似線自体に対する角度伝達誤差の影響が大きく、近似線を用いる効果が得られないため、少なくともアームの１回転を減速比で除算した角度以上を設定する必要がある。その一方で、逆にＸが大きすぎると、偏心の影響が大きく現れてしまう。
【０１０７】
そのため、Ｘの大きさは、角度伝達誤差の影響と偏心の影響とを考慮してバランス良く設定することが望ましい。この場合、鉛直位置の近傍の範囲として、第１実施形態で説明した鉛直位置となる角度範囲（α）を設定することもできる。また、各近似線は、直線で近似する以外にも、曲線で近似することもできる。
【０１０８】
＜鉛直位置における出力軸角度の検出精度を向上させる手法その２＞
上記したように、減速機６として波動歯車装置を採用する場合には、角度伝達誤差により出力軸角度の検出値にずれが生じることがあり、また、一定速度でアームを正転および逆転したとしても、出力軸が入力軸に引きずられた形になることによるずれが生じるおそれがある。
【０１０９】
そして、鉛直位置の近傍に設定した検出範囲内で正転および逆転を繰り返す場合には、図９に示すように、検出範囲の上限あるいは下限に到達して回転方向を逆にする場合、出力軸は、入力軸との間のねじれが反対向きになるまで摩擦で停止しており、ねじれが反対向きになると、入力軸に引きずられて動き出すという挙動を示す。
【０１１０】
そのため、検出範囲の上限から下限まで正転と逆転とを何度か繰り返し、その際に取得した出力軸角度の平均値をとることにより、図９に概ね菱形になる出力軸角度の軌跡の中心位置、つまりは、鉛直位置における出力軸角度を求めることができる。
【０１１１】
ただし、停止しているアームを最初に検出範囲の上限あるいは下限まで到達される場合には、図９に示すように初回の動作時の挙動が異なるため、精度を向上させるためには初回の回転時に得られた出力軸角度を除外することが望ましい。
【０１１２】
そこで、検出範囲の上限または下限のいずれか一方までアームを一旦回転させた後、アームを上限から下限まで回転させて所定角度ごとに出力軸角度を検出する処理と、同じ速さでアームを下限から上限まで回転させて所定角度ごとに出力軸角度を検出する処理とを同一回数だけ実行し、各処理において検出した複数の出力軸角度の平均値を、鉛直位置における出力軸角度とする。これにより、角度伝達誤差の影響を抑えた状態で求めることができる。
【０１１３】
＜測定位置を増加させて精度を向上させる手法＞
第１実施形態のロボット２は、ストッパ４が鉛直位置の正転側と逆転側とに設けられている例を示したが、ロボット２の利用形態によっては鉛直位置にアームを回転させることができない場合も想定される。
【０１１４】
そこで、図１０に示すように、例えばタップを切った取り付け孔４１をロボット２に複数の設けておき、この取り付け孔４１に治具としてストッパ４を取り付けることで、アーム自重の影響を受けない接触位置を増加可能な構成にすることができる。
【０１１５】
これにより、接触位置が増加することから、ストッパ４が鉛直位置を挟まない位置に設けられていたり、鉛直位置にアームを回転させることができなかったりする場合であっても、最低３つの接触位置を設定することができる。
【０１１６】
そして、取り付け孔４１の位置は機械的に求まることから、アームをストッパ４に接触させた接触位置において正しいアーム角度値を求めることができる。この場合、取り付け孔４１に取り付けられるストッパ４は、誤差曲線を求める処理を行うときだけ取り付ければよく、その後に取り外すことにより、ロボット２の稼動中に邪魔にならないようにすることができる。なお、アームの可動範囲を規定するためのストッパ４はそのまま取り付けばよい。
【０１１７】
また、接触位置を４つ以上にすることにより、測定誤差の影響をさらに抑制した状態で誤差曲線を求めることができ、補正値をより精度良く求めることができる。その場合、鉛直位置も利用できることは勿論である。
上記した処理を実行する制御部３ａをロボットシステム１によっても、同様の効果を得ることができる。
【０１１８】
（第３実施形態）
以下、第３実施形態について説明する。第３実施形態では、補正値を求める演算を簡略化する手法について説明する。
第１実施形態では、（３）式を用いて出力軸角度（θｏ）に対応するアーム角度値（θａ）を求め、求めたアーム角度値（θａ）における補正値を（１）式から求める手法について説明したが、上記したように、（３）式から直接的にアーム角度値（θａ）を求める場合には演算が困難であったり、演算の負荷が増大したりすることが懸念される。
【０１１９】
そこで、本実施形態では、補正式に含まれるアーム角度値の関数、つまり、以下に誤差項として示す（３）式の右辺第２項を、入力軸角度を前記減速機６の減速比で除算して得られるアーム角度で近似することで、演算の簡略化を図っている。以下、（３）式の下記に示す右辺第２項を、便宜的に誤差項と称する。
Ａ（ｓｉｎ（θａ＋φ））＋Ｂ      ・・・（誤差項）
【０１２０】
具体的には、誤差項に含まれるアーム角度値（θａ）を入力軸角度（θｉ）を減速機６の減速比で除算したアーム角度（θａｉ）とすることにより、誤差項を下記に示す近似項のように近似する。
Ａ（ｓｉｎ（θａｉ＋φ））＋Ｂ      ・・・（近似項）
【０１２１】
そして、この近似項を用いて（３）式を以下の（４）式のように近似する。
θｏ＝θａ＋Ａ（ｓｉｎ（θａｉ＋φ））＋Ｂ      ・・・（４）
この（４）式の場合、本来であればアーム角度値（θａ）を用いて演算すべきところを、アーム角度（θａｉ）を用いて近似していることから、アームの回転角度によっては、アーム自重の影響により誤差が含まれることが想定され、最終的に求まるアーム角度値（θａ）にも若干の誤差が生じる可能性がある。
【０１２２】
ただし、偏心誤差が上記したようにアーム１回転で１周期となる正弦波状に変化するのに対し、実際のロボット２においてはアーム角度値（θａ）とアーム角度（θａｉ）とのずれは非常に小さく、（３）式の右辺と（４）式の右辺とはほぼ等しいと考えることができる。そのため、（４）式のようにアーム角度（θａｉ）を用いる場合であっても、概ね（３）式と同程度の精度で偏心誤差を補正することができる。
【０１２３】
すなわち、補正値を求める際、アーム角度値（θａ）を、入力軸角度を減速機６の減速比で除算して得られるアーム角度（θａｉ）で近似することにより、（４）式に示すように四則演算と三角関数の演算とでアーム角度値（θａ）を求めることができるため、演算の負荷を大きく低減することができる。
上記した処理を実行する制御部３ａをロボットシステム１によっても、同様の効果を得ることができる。
【０１２４】
（その他の実施形態）
本発明は上記した各実施形態で例示した構成にのみ限定されるものではなく、その要旨を逸脱しない範囲で各種の変形や拡張あるいは組み合わせを行うことができる。
各実施形態では図３に示す処理をコントローラ３で実行する例を示したが、ステップＳ１〜Ｓ４の処理は、図示しないティーチングペンダントや上位の制御装置で実行することもできる。
【０１２５】
第１実施形態では接触位置と鉛直位置とを利用して補正を行う例示したが、アーム自重の重心（Ｇ）はロボット２の姿勢によって変化することから、例えば図３においてロボット２のアームが鉛直線（Ｌｖ）に線対称になったような状態等、入力軸角度が異なる鉛直位置が複数存在すると考えられる。また、第２実施形態で説明したように、複数の接触位置を設けられることも考えられる。
【０１２６】
そのため、１つの接触位置と２つの鉛直位置とを利用して補正を行うこともできるし、複数の接触位置と複数の鉛直位置とを利用して補正を行うこともできるし、３つ以上の接触位置のみを利用して補正を行うこともできるし、３つ以上の鉛直位置のみを利用して補正を行うこともできる。
【０１２７】
実施形態で示した接触位置は、アーム角度値を機械的に求めることができる位置でもあるが、アーム自重がストッパ４によって支持された状態であることから、減速機６に回転方向への力が加わらず、弾性変形分のずれが生じない位置でもある。そのため、例えばアームを手で回転させて接触位置にした場合等、アームを押し付ける側に弾性変形が生じない状態であれば、入力軸と出力軸との間にねじれが生じない、あるいは、ねじれが極微小であると考えられるため、測定位置におけるアーム角度値を入力軸角度から求めることもできる。
【符号の説明】
【０１２８】
図面中、１はロボットシステム、２はロボット、２ｃは第１アーム（アーム）、２ｄは第２アーム（アーム）、３はコントローラ（制御部）、３ａは制御部、４はストッパ、４Ａは第１ストッパ（ストッパ）、４Ｂは第２ストッパ（ストッパ）、５はモータ、６は減速機、７は入力軸角度検出器、８は出力軸角度検出器、４１は取り付け孔を示す。
【図１】
2019018328.tif 000003
【図２】
2019018328.tif 000004
【図３】
2019018328.tif 000005
【図４】
2019018328.tif 000006
【図５】
2019018328.tif 000007
【図６】
2019018328.tif 000008
【図７】
2019018328.tif 000009
【図８】
2019018328.tif 000010
【図９】
2019018328.tif 000011
【図１０】
2019018328.tif 000012