(57)【要約】【課題】アームやストッパの変形や損傷を招くことなく原点合わせを行うことができる原点合わせ方法、ロボットシステムを提供する。【解決手段】アームを速度制御によって移動させ、アームを可動範囲の一端側に設けられているストッパに押し当てた状態における角度検出器の値と、アームを可動範囲の他端側に設けられているストッパに押し当てた状態における角度検出器の値との平均値を求めてストッパ間の中央の位置を推定することにより、アームの原点合わせを行う。【選択図】図４
2019018327.tif 000002
【特許請求の範囲】
【請求項１】
モータによって駆動されるアームと、前記モータの回転角度を検出する角度検出器とを有し、前記アームの可動範囲がストッパによって機械的に規定されるロボットにおいて、前記アームの原点合わせを行うための原点合わせ方法であって、
前記アームを速度制御によって移動させ、前記アームを可動範囲の一端側に設けられている前記ストッパに押し当てた状態における前記角度検出器の値と、前記アームを可動範囲の他端側に設けられている前記ストッパに押し当てた状態における前記角度検出器の値との平均値を求めて前記ストッパ間の中点を推定することにより、前記アームの原点合わせを行うことを特徴とする原点合わせ方法。
【請求項２】
前記アームを、速度制御によって定まる押し当て力で前記ストッパに押し当てることを特徴とする請求項１記載の原点合わせ方法。
【請求項３】
前記アームを速度制御により前記ストッパに押し当てた後、可動範囲の両端において同じモータ出力で押し当てた状態で前記角度検出器の値を取得することを特徴とする請求項１または２記載の原点合わせ方法。
【請求項４】
前記アームを速度制御により移動させて前記ストッパに到達したと判定した際のモータ出力を用いることで、可動範囲の両端において同じモータ出力で押し当てた状態を実現することを特徴とする請求項３記載の原点合わせ方法。
【請求項５】
前記アームを押し当てた際に重力の影響が加わる側では、モータ出力を、少なくとも静摩擦力を越えられる分だけ増加させることを特徴とする請求項３または４記載の原点合わせ方法。
【請求項６】
前記アームを前記ストッパに押し当てる場合、重力の影響によりモータ出力が相対的に大きくなる側の前記ストッパへの押し当てを行った後に、モータ出力が相対的に小さくなる側の前記ストッパへの押し当てを行うことを特徴とする請求項１から５のいずれか一項記載の原点合わせ方法。
【請求項７】
モータによって駆動されるアームと、前記モータの回転角度を検出する角度検出器とを有し、前記アームの可動範囲がストッパによって機械的に規定されるロボットにおいて、前記アームの原点合わせを行うための原点合わせ方法であって、
前記アームの可動範囲の一端側に設けられている前記ストッパは、前記アームに下方から接触し、接触した状態において当該アームの自重が加わる位置に設けられており、
前記アームの可動範囲の他端側に設けられている前記ストッパは、前記アームに上方から接触し、接触した状態において当該アームの自重が加わらない位置に設けられており、
一端側において、前記アームを異なるモータ出力で前記ストッパに対して複数回押し当て、
複数回押し当てた際に取得したそれぞれのモータ出力と前記角度検出器の値とに基づいて、モータ出力の変化に伴う前記角度検出器の値の変化を示す一端側の前記ストッパの弾性変形特性を求め、
他端側において前記アームを前記ストッパに対して押し当てた際のモータ出力と同じモータ出力で一端側に押し当てたと仮定した場合に得られる一端側の前記角度検出器の値を、前記弾性変形特性に基づいて推定することを特徴とする原点合わせ方法。
【請求項８】
モータによって駆動されるアームを有するロボットと、
前記アームの可動範囲を機械的に規定するストッパと、
前記モータの回転角度を検出する角度検出器と、
前記アームを速度制御によって移動させ、前記アームを可動範囲の一端側に設けられている前記ストッパに押し当てた状態における前記角度検出器の値と、前記アームを可動範囲の他端側に設けられている前記ストッパに押し当てた状態における前記角度検出器の値との平均値を求めて前記ストッパ間の中央の位置を推定することにより、前記アームの原点合わせを行う制御部と、
を備えることを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットのアームの原点合わせを行うための原点合わせ方法、ロボットシステムに関する。
【背景技術】
【０００２】
ロボットは、一般的に、アームの回転角度を取得する目的で例えば光学エンコーダ等の角度検出器が設けられている。このとき、角度検出器８の値とアームの実際の回転角度との間にずれが生じると、ロボット動作時の位置精度の低下に直接結びつくことになる。そのため、ロボットを組み立てた後、アームの可動範囲を機械的に規定するストッパにアームを押し当て、可動範囲の両端でそれぞれ取得した角度検出器８の値の平均を原点として設定する原点合わせが行われている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６２−１０３７０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、特許文献１のような手法で原点合わせを行う際には、当然のことながらアームを回転させてストッパに押し当てる必要がある。
しかしながら、原点合わせを行う時点では、未だ原点が定まっていないことから、アームの位置は未確定となっている。その場合、通常の動作時のようにアームの回転角度に基づいた角度制御によりアームを回転させることができない状態となっている。そして、角度制御が困難な状態でアームを回転させると、回転速度やトルクが過大になってアームやストッパの変形や損傷を招くおそれが高くなる。
【０００５】
本発明は上記事情に鑑みてなされたものであり、その目的は、アームやストッパの変形や損傷を招くことなく原点合わせを行うことができる原点合わせ方法、ロボットシステムを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に記載した発明は、モータによって駆動されるアームと、モータの回転角度を検出する角度検出器とを有し、アームの可動範囲がストッパによって機械的に規定されているロボットにおいて、アームの原点合わせを行うためのロボットの原点合わせ方法である。
【０００７】
このような機械的にアームの可動範囲を規定する構成の場合には、アームを可動範囲の一端側に設けられているストッパに押し当てた状態における角度検出器の値と、アームを可動範囲の他端側に設けられているストッパに押し当てた状態における角度検出器の値とを用いて原点合わせを行うことができると考えられる。
【０００８】
具体的には、アームをストッパに押し当てたときの角度検出器の値を可動範囲の両端において取得し、取得した値の平均を取ることにより、例えば可動範囲の中点を原点として設定することができる。なお、可動範囲の中点ではなく、一方のストッパの位置を原点として設定する場合には、中点を特定した後、その半分をオフセット値として加えること等も可能である。
【０００９】
その一方で、原点合わせを行う前の段階では、原点が特定されていないため、アームの現在位置が未確定となっている。換言すると、原点合わせを行おうとする時点では、アームが現在どの角度に位置しているかが不明であるため、例えばストッパと接触する直前の角度まで移動させるといった角度制御が行えない状態となっている。
【００１０】
この場合、モータ出力を十分に大きくすることにより、アームの初期位置が可動範囲内のどの位置であっても、アームをストッパに接触させることができると考えられる。しかし、モータ出力が大き過ぎると、回転速度やトルクが過大になってアームやストッパの変形や損傷を招くおそれが高くなる。アームの回転方向によっては、ツールの自重によって同じモータ出力であってもアームの速度が速くなり、過大なトルクでアームがストッパに衝突したりするおそれがある。これはモータ出力を徐々に大きくしていく手法でも同様である。
【００１１】
その一方で、原点合わせを行うために最小限のモータ出力を出荷時等に予め設定しておいたとしても、出荷後にユーザ側でツールが取り付けられた場合には、モータ出力が不足してアームをストッパまで移動させることができなくなる可能性がある。
【００１２】
このように、原点合わせを行うためにアームをストッパに押し当てる際のモータ出力を予め設定することは困難である。換言すると、アームをストッパに押し当てて原点合わせを行う場合には、角度検出器８の値を取得する以前の準備段階において、考慮および対策すべき問題が存在していた。
【００１３】
そこで、アームをストッパに押し当てる際、アームを速度制御により移動させる。この場合、アームの位置が未確定であっても、アームの速度、より厳密には、アームの角速度は、角度検出器の値の時間変化に基づいて求めることができる。つまり、原点合わせを行うまでの段階においては、角度制御はできないものの、速度制御は可能である。
【００１４】
この場合、速度制御時の目標速度を、アームやストッパの変形や損傷を招かない程度に予め設定しておくことにより、アームやストッパの変形や損傷を防ぐことができる。そして、一定のモータ出力ではなく、一定の目標速度でアームを制御することにより、出荷後にユーザ側でツール等が取り付けられた場合であっても、アームを移動させることができる。つまり、原点合わせを行う際のアームの位置が可動範囲のどの位置であっても、アームをストッパまで移動させることができる。
【００１５】
さらに、一定の目標速度であれば、アームは、可動範囲の両端において、ストッパに同等の状態、つまりは、同等の押し当て状態で接触すると考えられる。そして、押し当て力が同等であれば、仮にアームとモータとの間に介在する減速機等の構造物が弾性変形したとしても、その弾性変形分は、大きさが等しく且つ向きが逆になると考えられる。
【００１６】
これにより、上記したように可動範囲の両端において取得した角度検出器の値の平均値を取ることで可動範囲の中点を正しく特定することができる。そして、その中点を原点とすることにより、アームやストッパの変形や損傷を招くことなく、原点合わせを行うことができる。
【００１７】
また、治具等を用いることなく、ロボットシステム単体で原点合わせを行うことができるため、出荷前の作業時だけでなく出荷後のメンテナンス時等においても容易且つ効率的に原点合わせを行うことができる。また、自動で原点合わせを行うことができるため、作業者の熟練度等に左右されることもない。
また、請求項８に記載したロボットシステムの発明によっても、上記した請求項１に係る発明と同様の効果を得ることができ、アームやストッパの変形や損傷を招くことなく、原点合わせを行うことができる。
【００１８】
請求項２に記載した発明は、速度制御によって定まる押し当て力でアームをストッパに押し当てる。上記したように、一定の目標速度で速度制御する場合、アームはストッパに同等の押し当て状態で接触すると考えられる。このとき、モータ出力は目標速度と実速度の差で決まること、また、押し当て状態では実速度は０であることから、設定した目標速度の大きさで押し当て力が決まることになる。
【００１９】
そのため、可動範囲の両端においてアームをストッパに押し当てた場合には、それぞれのストッパには同じ力が加わることになり、弾性変形量が等しくなる。そして、可動範囲の両端における弾性変形量が等しい場合には平均値をそのまま中点として扱うことができるため、原点合わせを行うことができる。
【００２０】
請求項３に記載した発明は、アームを速度制御によりストッパに押し当てた後、可動範囲の両端において同じモータ出力で押し当てた状態で角度検出器の値を取得する。
上記したように、速度制御によりアームを移動させることにより、アームが可動範囲のどの位置にあったとしても、アームをストッパまで移動させることができる。
【００２１】
ただし、アームの可動範囲によっては、換言すると、ストッパが設けられる位置によっては、可動範囲の両端において同等の押し当て状態を実現することが困難な場合がある。これは、アームやツールの自重が押し当て状態に影響を与える場合に相当する。
【００２２】
アームがストッパに接触した状態では、アームとストッパとは静止状態で釣り合っていることから、減速機等の構造物には、ロボットの姿勢とは無関係にモータ出力に相当するトルクが作用する。そして、このトルクは、構造物の弾性変形を引き起こす。
【００２３】
このとき、アームを重力に逆らって速度制御により移動させる際のモータ出力は、アームを重力に沿って速度制御により移動させる際のモータ出力よりも大きくなると考えられる。そのため、重力による影響が異なる位置関係でストッパが設けられている場合には、速度制御によりアームをストッパに接触させたとしても、モータ出力が異なることから、可動範囲の両端での弾性変形分に差が生じることになる。
【００２４】
そして、可動範囲の両端での弾性変形分に差が出ると、取得した角度検出器の値の中点にも差が生じ、原点を正しく特定できなくなる。
そこで、アームを速度制御によりストッパに押し当てた後、可動範囲の両端において同じモータ出力で押し当てた状態で角度検出器の値を取得する。
【００２５】
つまり、可動範囲の両端において、弾性変形の要因となるモータ出力が等しくなるように調整する。これにより、可動範囲の両端においてモータ出力に起因する弾性変形分が等しくなり、取得した角度検出器の値の平均が正しく可動範囲の中点となり、原点合わせを正しく行うことができる。
【００２６】
請求項４に記載した発明は、アームを速度制御により移動させてストッパに到達したと判定した際のモータ出力を用いることで、可動範囲の両端において同じモータ出力で押し当てた状態を実現する。上記したように、同じ速さでアームを移動させれば同じ押し当て状態が実現できるため、ストッパに到達したと判定した際のモータ出力を用いて押し当てることにより、モータ出力を調整する処理を省略して簡便に原点合わせを行うことができる。
【００２７】
請求項５に記載した発明は、アームを押し当てた際に重力の影響が加わる側では、モータ出力を、少なくとも静摩擦力を越えられる分だけ増加させる。これにより、実際には弾性変形していない状態を弾性変形したと誤判定するおそれを低減することができ、中点を推定する精度を向上させることができる。
【００２８】
請求項６に記載した発明は、アームをストッパに押し当てる場合、重力の影響によりモータ出力が相対的に大きくなる側のストッパへの押し当てを行った後に、モータ出力が相対的に小さくなる側のストッパへの押し当てを行う。この場合、逆の順番で押し当てを行うと、同じ力で他端側に押し当てた際に重力トルク分だけモータ出力が足りなくなるおそれがあり、その場合には再度の押し当てを行う必要がある。これに対して、本発明の順番で押し当てを行えば、先に押し当てた際のモータ出力のほうが相対的に大きいため、再度の押し当てが不要となり、効率よく原点合わせを行うことができる。
【００２９】
請求項７に記載した発明は、可動範囲の一端側においてアームを異なるモータ出力で前記ストッパに対して複数回押し当て、複数回押し当てた際に取得したそれぞれのモータ出力と角度検出器の値とに基づいて、モータ出力の変化に伴う角度検出器の値の変化を示す一端側のストッパの弾性変形特性を求め、他端側においてアームをストッパに対して押し当てた際のモータ出力と同じモータ出力で一端側に押し当てたと仮定した場合に得られる一端側の前記角度検出器の値を、弾性変形特性に基づいて推定する。
【００３０】
アームの可動範囲の一端側に設けられているストッパは、アームに下方から接触し、接触した状態において当該アームの自重が加わる位置に設けられており、アームの可動範囲の他端側に設けられているストッパは、アームに上方から接触し、接触した状態において当該アームの自重が加わらない位置に設けられている場合のように、重力による影響が異なる位置関係でストッパが設けられている場合には、各ストッパにアームを押し当てる際に考慮すべき事項が存在すると考えられる。
【００３１】
具体的には、一端側のストッパにはアームを押し当てた際に重力の影響が加算されてその分だけモータ出力以上の押し当て力が働くことになる一方、他端側のストッパにはアームを押し当てた際にアームの自重分がモータ出力から減算された押し当て力が働くことになる。この場合、他端側のモータ出力は、重力に逆らってアームを移動させる必要があることから、一端側よりもモータ出力が相対的に大きくなることが予想される。
【００３２】
そのため、他端側に押し当てたときと同じモータ出力で一端側に押し当てるようとすると、モータ出力が相対的に大きいことに加え、重力による影響が加わることから、ストッパあるいはアームの構造に対して過大な力が加わるおそれがある。その一方で、一端側に押し当てる際に構造に支障がない程度の押し当て力となるモータ出力で他端側に押し当てようとすると、アームを重力に逆らって移動させることができず、他端側のストッパに押し当てることができなくなるおそれもある。
【００３３】
また、重力による影響はロボットの姿勢によって変化すると考えられることや、ストッパの位置がユーザによって変更される可能性があること等を考慮すると、両端で同じ押し当て状態となるモータ出力を予め設定しておくことは困難である。
このように、重力による影響が異なる位置関係でストッパが設けられている場合には、可動範囲の両端において同等の押し当て状態を実現することが困難であることが予想される。そして、両端における押し当て状態が異なる場合には、弾性変形量が両端で異なることから、原点合わせを正しくできなくなる。
【００３４】
さて、前述のように、減速機等の構造物には、ロボットの姿勢とは無関係にモータ出力に相当するトルクが作用することで弾性変形が引き起こされる。ただし、アームやストッパおよび構造物の剛性自体は、ストッパの位置によって変化することはないと考えられる。
【００３５】
そのため、可動範囲の両端において異なるモータ出力で押し当てたとしても、モータ出力の変化に伴うストッパの弾性変形量の変化の特性が把握できていれば、同じモータ出力で押し当てた際の弾性変形分を推定することができ、同じ押し当て状態とした場合の角度検出器の値を推定できると考えられる。換言すると、ストッパの弾性変形量の変化の特性を把握できれば、可動範囲の両端において異なるモータ出力で押し当てた場合にも原点合わせを行うことができると考えられる。
【００３６】
そこで、アームやストッパおよび構造物の剛性自体はストッパの位置によって変化しない点に着目し、重力の影響が加算される一端側において、構造に影響を与えない程度のモータ出力で複数回の押し当てを行い、取得したそれぞれのモータ出力および角度検出器の値に基づいて一端側のストッパの弾性変形特性を求め、他端側においてアームを前記ストッパに対して押し当てた後、他端側におけるモータ出力と同じモータ出力で一端側に押し当てたと仮定した場合に得られる一端側の角度検出器の値を、弾性変形特性に基づいて推定する。
【００３７】
これにより、一端側における角度検出器の推定値と他端側で実測した角度検出器の値との平均を取ることで、つまりは、可動範囲の両端において同じ押し付け状態を再現することで、可動範囲の中点を特定することができ、原点合わせを行うことができる。そして、一端側のストッパには構造に影響を与えない程度のモータ出力で押し当てることから、アームやストッパの変形や損傷を招くことなく原点合わせを行うことができる。
【図面の簡単な説明】
【００３８】
【図１】第１実施形態によるロボットシステムの構成を模式的に示す図
【図２】ロボットの関節部の概略を模式的に示す図
【図３】ロボットの他の構成を模式的に示す図
【図４】角度検出器の値を取得する処理の流れを示す図
【図５】第２実施形態による各モーメントの向きを模式的に示す図
【図６】角度検出器の値を取得する流れを示す図
【図７】第３実施形態による角度検出器の値を取得する流れを示す図
【図８】モータ出力と角度検出器の値との関係を示す図
【図９】モータ出力の差分と弾性変形量の差分との関係を示す図
【図１０】他端側のモータ出力から角度検出器の値を推定する態様を模式的に示す図
【発明を実施するための形態】
【００３９】
以下、複数の実施形態について図面を参照しながら説明する。なお、各実施形態において実質的に共通する部位には同一符号を付して説明する。
（第１実施形態）
以下、第１実施形態について、図１から図４を参照しながら説明する。
【００４０】
図１に示すように、本実施形態のロボットシステム１は、いわゆる垂直多関節型のロボット２と、そのロボット２を制御するコントローラ３とを備えている。ロボット２は、ベース２ａ上に、鉛直方向に設定された回転軸を介して接続されているショルダ２ｂが水平方向に回転可能に連結されている。
【００４１】
このショルダ２ｂには、水平方向に設定された回転軸を介して第１アーム２ｃの一端が、垂直方向に回転可能に連結されている。一方、第１アーム２ｃの他端側には、水平方向に設定された回転軸を介して第２アーム２ｄの一端が、垂直方向に回転可能に連結されている。そして、第２アーム２ｄの他端側には、ツール２ｅが回転可能に連結されている。
また、ロボット２には、例えば第１アーム２ｃの垂直回転する際の可動範囲を機械的に規定するストッパ４が設けられている。このストッパ４は、メカエンドと称されることもある。
【００４２】
以下、図１において図示時計回り方向をアームの正回転方向と称し、図示反時計回り方向をアームの逆回転方向と称するとともに、アームが逆回転した際にストッパ４にあたる位置を可動範囲の下限と称し、アームが正回転した際にストッパ４にあたる位置を可動範囲の上限と称して説明する。また、可動範囲の下限と上限とを総称して、可動範囲の両端とも称して説明する。
【００４３】
本実施形態のロボット２は、可動範囲の下限を規定する下限ストッパ４ａと、正回転した際における可動範囲の上限を規定する上限ストッパ４ｂまたは上限ストッパ４ｃとを取り付け可能に構成されている。
【００４４】
下限ストッパ４ａは、ショルダ２ｂの下端側に取り付けられる。上限ストッパ４ｂは、ショルダ２ｂの上端側において、第１アーム２ｃを鉛直上方に伸ばしたときの中心線よりも下限ストッパ４ａ側になる位置に取り付け可能になっている。このため、下限ストッパ４ａと上限ストッパ４ｂとにより第１アーム２ｃの可動範囲を規定する場合には、第１アーム２ｃの可動範囲は、所定の角度（Δ１）となる。
【００４５】
一方、上限ストッパ４ｃは、ショルダ２ｂの下端側において、第１アーム２ｃの回転中心を通って図示上下方向に延びる仮想線に対して下限ストッパ４ａと線対象となる位置に取り付け可能になっている。つまり、下限ストッパ４ａと上限ストッパ４ｃは、ロボット２における高さ方向が同じ位置に取り付け可能になっている。このため、下限ストッパ４ａと上限ストッパ４ｃとにより第１アーム２ｃの可動範囲を規定する場合には、第１アーム２ｃの可動範囲は、所定の角度（Δ２）となる。なお、本実施形態では、Δ２は１８０°になっている。
【００４６】
この場合、図１に示すように複数のストッパ４を取り付け可能な構成とすることもできるが、下限ストッパ４ａと上限ストッパ４ｂとのみを取り付け可能な構成、あるいは、下限ストッパ４ａと上限ストッパ４ｃとのみを取り付け可能な構成とすることもできる。このとき、複数のストッパ４を取り付け可能な構成であれば、例えば上限ストッパ４ｃで可動範囲の上限を規定する際には可動範囲の途中に位置する上限ストッパ４ｂは取り外せばよい。また、図示は省略するが、ショルダ２ｂや第２アーム２ｄの可動範囲を規定するためのストッパ４を設ける構成とすることもできる。
【００４７】
このようなロボット２は、図２に示すように、各回転軸つまり各関節部５にアームを駆動するモータ６、モータ６の回転をアームに伝達する減速機７、および、モータ６の回転角度を検出する角度検出器８等が設けられている。本実施形態では、角度検出器８は、光学エンコーダにより構成されており、検出したモータ６の回転角度つまりはアームの回転角度に応じた値を出力する。
【００４８】
コントローラ３は、図示しないマイクロコンピュータ等で構成された制御部を有しており、ロボット２の姿勢や動作を制御する。具体的には、コントローラ３は、ロボット２の各関節部５のモータ６を駆動することにより、各アームの回転角度つまりは姿勢や動作を制御する。また、コントローラ３は、モータ出力指令値やモータ電流に基づいてモータ出力を検出する。ただし、モータ出力は、例えばトルクセンサやプッシュプル等を用いて検出することもできる。
【００４９】
また、コントローラ３は、後述するように、アームを移動させて可動範囲の一端側のストッパ４に押し当てた状態における角度検出器８の値と、アームを逆方向に駆動して他端側のストッパ４に押し当てた状態における角度検出器８の値との平均を取り、その平均を、アームを駆動する際の原点として設定する。
【００５０】
また、ロボットシステム１は、図１に示したロボット２以外にも、例えば垂直多関節型のいわゆる６軸ロボットや、図３に示すロボット２０のような水平多関節型のいわゆる４軸ロボットで構成することもできる。
【００５１】
図３に示すロボット２０は、ベース２０ａ上に、鉛直方向に設定された回転軸（Ｊ１０）を介して第１アーム２０ｂの一端が、水平方向に回転可能に連結されている。一方、第１アーム２０ｂの他端側には、鉛直方向に設定された回転軸（Ｊ１１）を介して第２アーム２０ｃの一端が、水平方向に回転可能に連結されている。そして、第２アーム２０ｃの他端側には、鉛直方向に移動可能なシャフト２０ｄが連結されている。
【００５２】
そして、ロボット２０には、平面視において時計回りを正回転、反時計回りを逆回転とすると、例えば第１アーム２０ｂには、第２アーム２０ｃが水平回転する際の可動範囲を規定する下限ストッパ４ａ、上限ストッパ４ｂが設けられている。なお、図３は、側面視にて下限ストッパ４ａおよび上限ストッパ４ｂが重なっている状態を示している。
【００５３】
また、ロボット２０には、シャフト２０ｄが上下方向に移動する際の可動範囲の下限を規定する下限ストッパ４ａ、および、可動範囲の上限を規定する上限ストッパ４ｂが設けられている。なお、図３に示すロボット２０の構成は一例である。以下、本実施形態では、ロボット２であれば例えば下限ストッパ４ａと上限ストッパ４ｃとを設けて第１アーム２ｃの原点合わせを行う場合や、ロボット２０であれば例えば第２アーム２０ｃの原点合わせを行う場合に好適な原点合わせ方法について、主としてロボット２を参照しながら説明する。
【００５４】
さて、ロボット２の動作は角度検出器８の値つまりはアームの回転角度に基づいて制御されるため、角度検出器８の値とアームの実際の回転角度との間にずれがあると、動作時の位置精度が低下することになる。そのため、一般的には、ロボット２を組み立てた後、可動範囲の両端においてアームをストッパ４に押し当て、その状態で取得した角度検出器８の値に基づいて各関節部５の原点合わせが行われている。
【００５５】
このとき、原点合わせを行うためには、当然のことながらアームをストッパ４に押し当てることが必要になる。しかし、原点合わせを行う時点では未だ原点が定まっていないことから、アームの位置は未確定になっている。そのため、通常の動作時のようにアームの回転角度に基づいた角度制御を行うことが困難である。
【００５６】
そして、角度制御を行うことが困難な状態でアームを回転させてしまうと、回転速度やトルクが過大になってアームやストッパ４の変形や損傷を招くおそれがある。
また、例えば現場で保守のために原点合わせを行う場合には、ロボット２に取り付けられたツール２ｅの重さの影響やアームに許容されている可動域の制約等により、あらかじめ無負荷の状態で設定していたモータ出力ではトルクが足りずにアームが動かない可能性がある。
【００５７】
このように、アームをストッパ４に押し当てる態様にて原点合わせを行う場合には、まず、角度検出器８の値を読み取る以前の準備段階において、つまりは、アームを移動例えば回転させてストッパ４に押し当てるまでの段階において、十分に考慮および対策すべき問題が存在している。
【００５８】
さらに、準備段階だけではなく、角度検出器８の値を読み取る段階においても、十分に考慮および対策すべき問題が存在する。一定のモータ出力（トルク）でアームをストッパ４に押し当てた状態では、アームがストッパ４に対して静止している状態つまりは力が釣り合っている状態になることから、ストッパ４とモータ６の間に介在する減速機７等の構造物には、ロボット２の姿勢とは無関係に、モータ６の出力トルク分だけが作用することになる。
【００５９】
この場合、アーム自体はストッパ４によって位置が規定されているとしても、図２に示すように、角度検出器８の値は、減速機７のバックラッシ分（Ｄ１）とモータ６の出力トルクに比例した減速機７等の構造物の弾性変形分（Ｄ２）とだけ、アームが停止した位置を通り過ぎた値（Ｄ３。以下、行き過ぎ量と称する）を出力することになる。なお、図２では、説明のためにバックラッシ分（Ｄ１）と弾性変形分（Ｄ２）とを誇張して示している。また、バックラッシ分（Ｄ１）、弾性変形分（Ｄ２）および行き過ぎ量（Ｄ３）は、正回転方向を正、逆回転方向を負とするものとする。
【００６０】
このとき、バックラッシ分（Ｄ１）は、可動範囲の上限と下限とにおいてそれぞれアームをストッパ４に押し当てた状態においては、アームの回転方向つまりはアームの押し当て方向が逆向きになっていることから、互いに相殺されると考えられる。
【００６１】
一方、弾性変形分（Ｄ２）は、モータ出力に応じて変化するため、単にアームがストッパ４に押し当てられているというだけの状態では、それぞれの弾性変形分（Ｄ２）に差が生じる可能性がある。そして、弾性変形分（Ｄ２）に差が生じた場合には、可動範囲の上限と下限とにおいて行き過ぎ量（Ｄ３）が異なることから、中点の位置にずれが生じることになる。つまり、原点合わせを正確に行えなくなる。これは、角度検出器８の値は同じ方向に押し当てている場合にはモータ出力の差分に比例して弾性変形分に差が生じるためである（後述する図８参照）。
【００６２】
なお、弾性変形分（Ｄ２）が生じないようにアームとストッパ４とを接触させる構成とすることも考えられるが、その場合には例えばプッシュプルゲージ等の治具を用いてストッパ４に対して力が加わっていないこと等を検出する必要があり、ロボットシステム１単独で行うことが困難になる。
【００６３】
そこで、ロボットシステム１では、図４に示す処理を実行することにより、アームやストッパ４の変形や損傷を招くことなく、また、治具等を用いることなく、原点合わせを行っている。図４は、原点合わせを行う際の処理の流れを示している。なお、この処理はコントローラ３によって行われるものの、説明の簡略化のため、ロボットシステム１を主体として説明する。
【００６４】
ロボットシステム１は、原点合わせを行う際、まず、アームの回転方向つまりは押し当て方向を設定する（Ｓ１）。この場合、最初に設定する押し当て方向は正回転方向または逆回転方向のいずれでもよいが、ここでは逆回転方向を設定したとする。押し当て方向を設定すると、ロボットシステム１は、目標速度（ｖｃ）に速度制御を開始する（Ｓ２）。つまり、ロボットシステム１は、原点合わせを行う段階では上記したように角度制御ができないことから、速度制御によってアームを回転させてストッパ４に押し当てる。
【００６５】
ここで、ｖｃは、アームを回転させる際に設定される速度である。この目標速度（ｖｃ）は、ストッパ４に接触しても損傷等を起こさない程度の速度が設定される。なお、目標速度（ｖｃ）は、原点合わせの作業時にユーザが設定可能とすることもできる。
また、このステップＳ２では、ロボットシステム１は、速度制御を開始した後、アームが目標速度あるいは目標速度付近に達するまで待機する。これは、速度制御を開始した直後においてはアームの速度が小さいことから、後述するステップＳ３の判定に利用できないためである。
【００６６】
速度制御を開始した後にアームの速度が目標速度、または目標速度付近まで達すると、ロボットシステム１は、角度検出器８の値の変化量から求まるアームの動作速度（ｖ。角速度）に基づいて、動作速度の絶対値（｜ｖ｜）が速度低下判定閾値（ｅ１）未満となったか、または、目標速度との差分の絶対値（｜ｖｃ−ｖ｜）が速度偏差過大判定閾値（ｅ２）よりも大きくなったかを判定する（Ｓ３）。
【００６７】
ここで、速度低下判定閾値（ｅ１）および速度偏差過大判定閾値（ｅ２）は、目標速度（ｖｃ）で回転しているアームがストッパ４に接触したか否かを判定するための閾値である。また、２種類の閾値で判定するのは、目標速度（ｖｃ）に応じた判定ができるようにするためである。これらの閾値はモータ６の定格トルクや構造物の強度、目標とする検出時間等に応じて適宜設定することができる。
【００６８】
例えば目標速度（ｖｃ）が比較的低速に設定されている場合には、アームがストッパ４に接触してもそれほど過大な力は加わらないため、速度低下判定閾値（ｅ１）を用いて速度の低下を検出すれば、アームがストッパ４に接触したことを判定できると考えられる。
【００６９】
一方、アームを比較的大きく回転させる必要がある場合には、目標速度（ｖｃ）が比較的高速に設定されることが想定される。その場合、アームがストッパ４に衝突して損傷を招くおそれがあるが、速度偏差過大判定閾値（ｅ２）を用い、動作速度（ｖ）が目標速度（ｖｃ）から大きく変化した場合にモータ出力をその時の値に固定して速度制御を解除することで、アームやストッパ４の損傷を招くことなくアームがストッパ４に接触したことを判定できると考えられる。
【００７０】
このように、アームが回転してストッパ４に接触した場合にはアームの回転がその時点で停止することから、ロボットシステム１は、動作速度（ｖ）が速度低下判定閾値（ｅ１）よりも小さくなったか否か、または、速度偏差過大判定閾値（ｅ２）を超える減速があったか否かを判定条件として、アームがストッパ４に接触したか否かを判定する。
【００７１】
ロボットシステム１は、アームがストッパ４に接触していないと判定すると（Ｓ３：ＮＯ）、速度制御を継続する。一方、ロボットシステム１は、アームがストッパ４に接触したと判定すると（Ｓ３：ＹＥＳ）、モータ出力をその時の値に固定して速度制御を解除し（Ｓ４）、角度検出器８の値、この場合は下限ストッパ４ａに接触した状態での値（θａ）を取得する。
【００７２】
角度検出器８の値を取得すると、ロボットシステム１は、押し当て方向を逆向き、この場合は正回転方向に設定し（Ｓ６）、同じ目標速度（ｖｃ）に速度制御を開始し（Ｓ７）、動作速度（ｖ）の絶対値（｜ｖ｜）が速度低下判定閾値（ｅ１）未満となったか、または、目標速度との差分の絶対値（｜ｖｃ−ｖ｜）が速度偏差過大判定閾値（ｅ２）よりも大きくなったかを判定する（Ｓ８）。
【００７３】
そして、いずれかの判定条件が成立すると、ロボットシステム１は、モータ出力をその時の値に固定して速度制御を解除し（Ｓ９）、角度検出器８の値、この場合は上限ストッパ４ｃに接触した状態での値（θｃ）を取得する（Ｓ１０）。つまり、アームを速度制御により移動させてストッパ４に到達したと判定した際のモータ出力で、アームを押し当てている。
【００７４】
このとき、アームは、逆回転および正回転の何れにおいても、同じ目標速度（ｖｃ）に速度制御されるとともに、同じ判定条件でストッパ４との接触が判定される。そのため、アームが下限ストッパ４ａに接触するときの状態は、アームが上限ストッパ４ｃに接触するときの状態と同じである。より平易に言えば、速度制御されたアームは、下限ストッパ４ａおよび上限ストッパ４ｃに対して一定のモータ出力、つまりは、同じ力が加わった状態で接触することになる。
【００７５】
このため、可動範囲の下限と上限とでは、同じ力による弾性変形が生じることになり、弾性変形分（Ｄ２）が同じになる。そして、弾性変形分（Ｄ２）が同じであれば、角度検出器８は、同じ行き過ぎ量（Ｄ３）が逆方向にそれぞれ加わった値を出力することになる。
【００７６】
そして、角度範囲の上限と下限とにおいて同じ弾性変形が生じているのであれば、取得した２つの角度検出器８の値（θａ、θｃ）の平均を取れば、正確に下限ストッパ４ａと上限ストッパ４ｃとの中点が特定されることになる。
【００７７】
そのため、ロボットシステム１は、取得した２つの角度検出器８の値（θａ、θｃ）の平均を、原点として算出する（Ｓ１１）。これにより、理論上、ストッパ４やアームの寸法公差と角度検出器８の分解能およびモータ出力のばらつきの範囲内で、アームに対する角度検出器８の原点合わせを正確に行うことができる。
このように、本実施形態のロボットシステム１は、アームを速度制御より詳細には角速度制御により駆動することにより、原点合わせを行っている。
【００７８】
以上説明した構成によれば、次のような効果を得ることができる。
ロボットシステム１は、アームを速度制御しながら回転させてストッパ４に押し当てる。具体的には、アームが回転している際の角度検出器８の値の変化量すなわちアームの動作速度を監視し、動作速度の変化がなくなった時点、または、動作速度が大きく減速した時点で可動範囲の端に到達したとみなし、可動範囲の上限と下限とでそれぞれ角度検出器８の値を取得し、その平均を原点に設定することで、原点合わせを行っている。
【００７９】
この場合、例えばアームを回転させる際にアームの自重の影響でモータ６の出力が足りなくなると動作速度（ｖ）が徐々に下がるため、目標速度（ｖｃ）に近づけるためモータ６の出力が上がる。そのため、ツール２ｅの重さが可搬重量以下であれば、可動範囲の端に到達する前に止まってしまうことはない。
【００８０】
そして、動作速度の変化がなくなった時点、または、動作速度が大きく減速した時点でストッパ４に到達したと判定すれば、ツール２ｅの重さによらず、弱い力でアームをストッパ４に押し当てることができる。そして、アームを速度制御により移動させてストッパ４に到達したと判定した際のモータ出力を用いることで、可動範囲の両端において同じモータ出力で押し当てた状態を実現することができる。
【００８１】
これにより、アームの可動範囲の両端で同じ力で押し当てた状態における角度検出器８の値、つまりは、逆方向にストッパ４を同じ行き過ぎ量（Ｄ３）だけ行き過ぎた状態における角度検出器８の値を取得でき、両者の値の平均値を求めれば、可動範囲の両端のストッパ４の中点を原点とする原点合わせを行うことができる。そして、原点合わせができれば、角度検出器８のオフセット値を取得することができる。
【００８２】
したがって、アームやストッパ４の変形や損傷を招くことなく原点合わせを行うことができる。
この場合、原点は、角度検出器８の値の平均ではなく、いずれかのストッパ４の位置に設定する等、ロボット２の制御に都合の良いように任意のオフセット値を加えることもできる。
【００８３】
また、治具等を用いることなくロボットシステム１単独且つ自動で原点合わせを行うことができるため、使い勝手を向上させることができるとともに、ロボット２を設置した現場での作業やある程度の期間が経過した後のメンテナンス等においても、容易に原点合わせを行うことができる。また、自動で原点合わせを行うことができるため、作業者の熟練度等に左右されることもない。
【００８４】
また、この手法は、本実施形態のように、ロボット２であれば下限ストッパ４ａと上限ストッパ４ｃとを設けた場合のように、アームの自重によらず可動範囲の上限と下限とにおいてストッパ４への押し当て状態が同じになる構成や、ロボット２０であれば例えば第２アーム２０ｃのように回転方向が水平方向に限定されている構成、つまりは、可動範囲の両端においてアームに掛かる重力がモータ６のトルクに対して同じように作用する場合に問題なく原点合わせができることから、特に有意である。
【００８５】
また、図４に示す原点合わせの処理を実行可能な制御部を有するコントローラ３を備えたロボットシステム１によっても、アームやストッパ４の変形や損傷を招くことなく原点合わせを行うことができる等、上記した同様の効果を得ることができる。
【００８６】
また、制御部としては、実施形態で例示したコントローラ３以外に、図示は省略するがティーチングペンダントを用いる構成とすることもできる。
また、モータ出力と実際にアームに発揮されるモーメントの関係が既知であれば、減速機７等の構造物の剛性が得られるため、自重によるたわみ分を補正した角度制御にも活用することができる。
【００８７】
（第２実施形態）
以下、第２実施形態について、図５および図６を参照しながら説明する。第２実施形態では、アームが鉛直方向に回転あるいは移動する場合における原点合わせの手法について説明する。なお、ロボットシステム１の構成は第１実施形態と共通するため、図１から図３も参照しながら説明する。
【００８８】
可動範囲の両端において同じモータ出力でアームをストッパ４に押し当てた場合、ストッパ４とモータ６との間に存在する減速機７等の構造物には、静止状態で力が釣り合っていることからロボット２の姿勢とは無関係にモータ６の出力トルク分だけが作用する。この場合、角度検出器８は、上記した図３に示したように、減速機７のバックラッシ分（Ｄ１）とモータ６の出力トルクに比例した構造物の弾性変形分（Ｄ２）とに応じてストッパ４の位置を通り過ぎた値、つまり、行き過ぎ量（Ｄ３）を含む値を出力することになる。
【００８９】
そのため、アームの可動範囲の両端で同じモータ出力で押し当てれば、同じ量且つ逆方向に行き過ぎ量（Ｄ３）が発生することから、両端での角度検出器８の値の平均値を求めれば、両端のストッパ４の中点を原点として設定する原点合わせを行うことができる。このため、同じモータ出力でアームをストッパ４に押し当てれば、理論上、ストッパ４やアームの寸法公差や角度検出器８の分解能およびモータ出力のばらつきの範囲内で、アームに対する角度検出器８の原点合わせを正確に行うことができる。
【００９０】
だたし、ストッパ４の位置によっては、同じモータ出力で押し当てることによる原点合わせが困難な場合が想定される。
まず、ストッパ４の位置によって原点合わせを行うことが困難になる１つ目の大きな理由として、モータ出力の値を予め一定値に設定することが難しいという点が挙げられる。
【００９１】
可動範囲内のどの位置から原点合わせを開始してもアームをストッパ４に押し当てることができるようにするためには、モータ出力値をアームの自重を振り切れるだけ十分大きく設定しておく必要がある。しかし、その場合には、アームの自重が最大になる位置以外にストッパ４が設けられていると、自重を支えるために必要となるモータ出力が小さくなる分だけ、アームの移動速度が速くなる。
【００９２】
その結果、アームがストッパ４により強く押し当てられることになり、アームやストッパ４の損傷を招くおそれがある。また、アームの自重と同じ方向へ押し当てる場合には、さらにアームが強くストッパ４に押し当てられることになる。これは、モータ出力を徐々に大きくしていく手法の場合も同様である。
【００９３】
具体的には、例えば図５に示すように、ロボット２において第１アーム２ｃの可動範囲を下限ストッパ４ａと上限ストッパ４ｂとにより規定する場合や、図３に示すロボット２０においてシャフト２０ｄの可動範囲を下限ストッパ４ａと上限ストッパ４ｂとにより規定する場合がこれに相当する。以下、第１アーム２ｃやシャフト２０ｄを、便宜的にアームと総称して説明する。
【００９４】
図５に示すロボット２の場合、上限ストッパ４ｂに向かってアームを動作させる際には、モータ出力によるモーメント（Ｍ１）とアームの自重によるモーメント（Ｍ２）が逆向きであることから、重力に逆らってアームを移動できるだけのモータ出力、より厳密に言えば、アームの自重が最大になる姿勢でのモータ出力よりも大きな出力が必要になる。
【００９５】
その一方で、可動範囲の上限に向かってアームを移動させる場合と下限に向かって移動させる場合で同じモータ出力にしてしまうと、下限ストッパ４ａ側に移動する際には、モータ出力によるモーメント（Ｍ１）とアームの自重によるモーメント（Ｍ２）が同じ向きになることから、アームの自重と同じ方向にモータ出力が作用してアームの移動速度が相対的に速くなるとともにアームの自重分が加わり、下限ストッパ４ａに過剰な力で押し当てられてしまう。換言すると、下限ストッパ４ａからの反力（Ｆ１）が、上限ストッパ４ｂに比べて大きくなる。
【００９６】
このように、アームを移動させる際に重力が影響する場合には、同じモータ出力で押し当てるようとすると、重力に逆らってアームを移動できるだけのモータ出力が必要とされる一方、そのモータ出力でアームの自重と同じ方向にモータ出力が作用する側のストッパ４に押し当てると過剰な力が加わってしまう。
【００９７】
そして、過剰な力に対処してアームやストッパ４が損傷しないようにするために例えば強固な構造にすること等が必要になってしまう。また、ストッパ４に加わる力が異なれば、弾性変形分（Ｄ２）が両端で異なってしまうため、正確な原点を特定することができなくなる。
【００９８】
次に、原点合わせを行うことが困難になる２つ目の大きな理由として、損傷等を招かない程度の比較的小さな値をモータ出力に予め設定しておくことが難しい点が挙げられる。
例えば、出荷後のロボット２に対してメンテナンス等のために現場で原点合わせを行うことがある。この場合、ロボット２にはツール２ｅ等が取り付けられているため、上記したように重力に逆らって移動できるようにするためには、出荷時に行った原点合わせのときよりも少なくともツール２ｅ分は出力を大きくする必要がある。
【００９９】
また、周辺設備とロボット２との関係によっては、例えばアームが干渉する等の理由により、出荷時と同じ姿勢で原点合わせを行うことができず、アームの自重による影響が異なっていることも想定される。
【０１００】
このとき、もしも出荷時の原点合わせで用いたモータ出力では足りなかったりアームの自重とモータ出力とが釣り合ってしまったりすると、上限ストッパ４ｂに到達する前に角度検出器８の値の変化がなくなり、可動範囲の上限に到達したと誤判定した状態で角度検出器８の値を取得して間違った原点を算出してしまうおそれがある。
【０１０１】
そこで、本実施形態では、図６に示す処理を実行することにより、アームの自重が影響する場合であっても正確に原点合わせを行うことを可能としている。なお、図６に示す処理において、上記した第１実施形態で説明した処理と共通する処理については同一のステップ番号を付し、その詳細な説明は省略する。
【０１０２】
ロボットシステム１は、図６に示す処理において、押し当て方向を設定し（Ｓ１）、目標速度（ｖｃ）に速度制御を開始する（Ｓ２）。速度制御を開始してアームの速度が目標速度または目標速度付近まで達すると、ロボットシステム１は、角度検出器８の値の変化量から求まるアームの動作速度（ｖ）に基づいて、動作速度の絶対値（｜ｖ｜）が速度低下判定閾値（ｅ１）未満となったか、または、目標速度との差分の絶対値（｜ｖｃ−ｖ｜）が速度偏差過大判定閾値（ｅ２）よりも大きくなったかを判定する（Ｓ３）。つまり、ロボットシステム１は、第１実施形態と同様に速度制御によりアームを移動させている。
【０１０３】
ロボットシステム１は、アームがストッパ４に接触していないと判定すると（Ｓ３：ＮＯ）、速度制御を継続する。一方、ロボットシステム１は、アームがストッパ４に接触したと判定すると（Ｓ３：ＹＥＳ）、モータ出力をその時の値に固定して速度制御を解除し（Ｓ４）、モータ出力（Ｐａ）を取得した後（Ｓ２０）、角度検出器８の値（θａ）を取得する（Ｓ５）。つまり、ロボットシステム１は、アームがストッパ４に接触して押し当てられた状態におけるモータ出力（Ｐａ）および角度検出器８の値（θａ）を取得する。
【０１０４】
続いて、ロボットシステム１は、押し当て方向を逆向きに設定し（Ｓ６）、同じ目標速度（ｖｃ）に速度制御を開始し（Ｓ７）、動作速度（ｖ）の絶対値（｜ｖ｜）が速度低下判定閾値（ｅ１）未満となったか、または、目標速度との差分の絶対値（｜ｖｃ−ｖ｜）が速度偏差過大判定閾値（ｅ２）よりも大きくなったかを判定する（Ｓ８）。
【０１０５】
そして、ロボットシステム１は、いずれかの判定条件も成立していない場合には（Ｓ８：ＮＯ）速度制御を継続する一方、いずれかの判定条件が成立した場合には（Ｓ８：ＹＥＳ）、速度制御を解除した後（Ｓ９）、モータ出力（Ｐｂ）を調整する（Ｓ２１）。
【０１０６】
このステップＳ２１では、ロボットシステム１は、モータ出力（Ｐｂ）を、ステップＳ２０で取得したモータ出力（Ｐａ）に一致するように調整している。つまり、ロボットシステム１は、ストッパ４に接触した後にアームをストッパ４に押し当てる際の押し当て力を、可動範囲の両端で同じになるように調整する。
【０１０７】
モータ出力を調整すると、ロボットシステム１は、角度検出器８の値（θｂ）を取得する（Ｓ１０）。この場合、アームをストッパ４に押し当てる力が一致していることから、ストッパ４の弾性変形分（Ｄ２）は、角度検出器８の値（θａ）を取得したときとは同じ大きさで向きが逆になっている。
【０１０８】
そして、ロボットシステム１は、取得した２つの角度検出器８の値（θａ、θｂ）の平均を原点として算出する（Ｓ１１）。これにより、理論上、ストッパ４やアームの寸法公差と角度検出器８の分解能およびモータ出力のばらつきの範囲内で、アームに対する角度検出器８の原点合わせを正確に行うことができる。なお、原点は、角度検出器８の値の平均ではなく、いずれかのストッパ４の位置に設定する等、ロボット２の制御に都合の良いように任意のオフセット値を加えることもできる。
【０１０９】
以上説明した構成によれば、次のような効果を得ることができる。
本実施形態のロボットシステム１は、アームを速度制御により駆動してストッパ４に押し当てた後、可動範囲の両端において同じモータ出力で押し当てた状態で角度検出器８の値を取得する。
【０１１０】
これにより、可動範囲の端に到達する前に止まってしまうことなく弱い力でアームをストッパ４に押し当てることができ、アームやストッパ４の変形や損傷を招くことなく原点合わせを行うことができる等、第１実施形態と同様の効果を得ることができる。
【０１１１】
また、アームをストッパ４に押し当てる力が可動範囲の両端側で一致していることから、下限側と上限側とでは各行き過ぎ量（Ｄ３）の大きさが同じで向きが逆になる。そのため、下限側と上限側とで取得した角度検出器８の値の例えば平均を取ることにより、原点を正確に特定することができる。
【０１１２】
実施形態ではモータ出力（Ｐａ）のほうが大きい場合を想定しており、ステップＳ２１においてはモータ出力をＰａに合わせる流れを示したが、例えば予め目標となるモータ出力（Ｐｃ）を設定しておき、ステップＳ２０、Ｓ２１において、モータ出力（Ｐｃ）となるように調整する流れとすることもできる。
【０１１３】
また、可動範囲の両端への押し当てを一度実施してモータ出力が大きい側を予め特定しておき、モータ出力が大きい側に対してステップＳ１〜Ｓ５の処理を行い、モータ出力が小さい側に対してステップＳ６〜Ｓ１０の処理を行う流れとすることもできる。また、後述する第３実施形態のように、可動範囲の両端においてバックラッシ分を一致させるために、ステップＳ６とステップＳ８の後段にそれぞれモータ出力（Ｐ）の方向が押し当て方向と一致するか否かを判定する処理（Ｓ３０。図７参照）を含む流れとすることもできる。
【０１１４】
また、モータ出力と実際にアームに発揮されるモーメントの関係が既知であれば、減速機７等の構造物の剛性が得られるため、自重によるたわみ分を補正した角度制御にも活用することができる。
また、上限ストッパ４ｂに向かってアームを回転させる場合には重力に逆らう必要があるため、下限ストッパ４ａに向かってアームを回転させる場合よりもモータ出力が大きくなると想定される。そのため、上限ストッパ４ｂに押し当ててから下限ストッパ４ａに押し当てる順番とすることにより、モータ６が必要とする出力を足りなくなるおそれを低減でき、再計測し無ければならない状態を回避することができる。
【０１１５】
なお、十分なモータ出力を予め設定しているのであれば、ストッパ４へ押し当てを行う順序は、上限ストッパ４ｂに押し当ててから下限ストッパ４ａに押し当てる順番とすることができるし、下限ストッパ４ａに押し当ててから上限ストッパ４ｂに押し当てる順番とすることもできる。
【０１１６】
（第３実施形態）
以下、第３実施形態について、図７から図１０を参照しながら説明する。第３実施形態では、アームが鉛直方向に回転あるいは移動する場合における原点合わせの手法について、第２実施形態とは異なる手法を説明する。なお、ロボットシステム１の構成は第１実施形態と共通するため図１から図３も参照しながら説明するとともに、原点合わせ時における課題や背景は第２実施形態と共通するため図５も参照しながら説明する。
【０１１７】
まず、上記した第２実施形態で説明したように、例えば図５に示すようにロボット２において第１アーム２ｃの可動範囲を下限ストッパ４ａと上限ストッパ４ｂとにより規定する場合や、図３に示すロボット２０においてシャフト２０ｄの可動範囲を下限ストッパ４ａと上限ストッパ４ｂとにより規定する場合を想定する。
【０１１８】
つまり、本実施形態では、アームの可動範囲の一端側に設けられているストッパ４ａは、アームに下方から接触し、接触した状態において当該アームの自重が加わる位置に設けられており、アームの可動範囲の他端側に設けられているストッパ４ｂは、アームに上方から接触し、接触した状態において当該アームの自重が加わらない位置に設けられている状態である。
【０１１９】
このように重力による影響が異なる位置関係でストッパ４が設けられている場合には、各ストッパ４にアームを押し当てる際に考慮すべき事項が存在すると考えられる。具体的には、一端側のストッパ４ａには、アームを押し当てた際に重力の影響が加算されてその分だけモータ出力以上の押し当て力が働くことになる。一方、他端側のストッパ４ｂには、アームを押し当てた際にアームの自重分がモータ出力から減算された押し当て力が働くことになる。この場合、他端側のモータ出力は、重力に逆らってアームを移動させる必要があることから、一端側よりもモータ出力が相対的に大きくなると予想される。
【０１２０】
そのため、他端側に押し当てたときと同じモータ出力で一端側に押し当てるようとすると、モータ出力が相対的に大きいことに加え、重力による影響が加わることから、ストッパ４あるいはアームの構造に対して過大な力が加わるおそれがある。その一方で、一端側に押し当てる際に構造に支障がない程度の押し当て力となるモータ出力で他端側に押し当てようとすると、アームを重力に逆らって移動させることができず、他端側のストッパに押し当てることができなくなるおそれもある。この場合、重力による影響はロボット２の姿勢によって変化すると考えられることや、ストッパ４の位置がユーザによって変更される可能性があること等を考慮すると、両端で同じ押し当て状態となるモータ出力を予め設定しておくことは困難であると考えられる。
【０１２１】
このように、重力による影響が異なる位置関係でストッパが設けられている場合には、可動範囲の両端において同等の押し当て状態を実現することが困難であることが予想される。そして、両端における押し当て状態が異なる場合には、弾性変形量が両端で異なることから、原点合わせを正しくできなくなる。
【０１２２】
そこで、本実施形態では、アームやストッパ４およびその他の構造物の剛性自体はストッパ４の位置によって変化しない点に着目して、図７に示す処理を実行することにより原点合わせを行っている。なお、図７に示す処理において、上記した第１実施形態で説明した処理と共通する処理については同一のステップ番号を付し、その詳細な説明は省略する。
【０１２３】
ロボットシステム１は、図７に示す処理において、押し当て方向を設定し（Ｓ１）、目標速度（ｖｃ）に速度制御を開始する（Ｓ２）。速度制御を開始してアームの速度が目標速度または目標速度付近まで達すると、ロボットシステム１は、角度検出器８の値の変化量から求まるアームの動作速度（ｖ）に基づいて、動作速度の絶対値（｜ｖ｜）が速度低下判定閾値（ｅ１）未満となったか、または、目標速度との差分の絶対値（｜ｖｃ−ｖ｜）が速度偏差過大判定閾値（ｅ２）よりも大きくなったかを判定する（Ｓ３）。つまり、ロボットシステム１は、第１実施形態と同様に速度制御によりアームを移動させている。
【０１２４】
ロボットシステム１は、アームがストッパ４に接触していないと判定すると（Ｓ３：ＮＯ）、速度制御を継続する。一方、ロボットシステム１は、アームがストッパ４に接触したと判定すると（Ｓ３：ＹＥＳ）、モータ出力（Ｐ）の方向が押し当て方向と一致するか否かを判定する（Ｓ３０）。
【０１２５】
アームの自重が掛かる方向と同じ方向にアームを動かしていった場合、アームの自重によって、モータ６の回転角度よりも減速機７のバックラッシ分だけアーム角度が先行している。そのため、アームがストッパ４に接触した直後では、バックラッシ分は、可動範囲の反対側に押し当てた状態に一致しないため、バックラッシ分を一致させる必要がある。
【０１２６】
そのため、ロボットシステム１は、モータ出力（Ｐ）の方向が押し当て方向と一致しないと判定した場合には（Ｓ３０：ＮＯ）、速度制御を継続することによりモータ出力を増加させ、押し当て方向とモータ６の駆動方向が一致するようにしている。
【０１２７】
そして、ロボットシステム１は、モータ出力（Ｐ）の方向が押し当て方向と一致した状態になると（Ｓ３０：ＹＥＳ）、モータ出力をその時の値に固定して速度制御を解除し（Ｓ４）、現在のモータ出力（Ｐ）における角度検出器８の値（θ１）を取得する（Ｓ３１）。
【０１２８】
続いて、ロボットシステム１は、現在のモータ出力（Ｐ）をαだけ増加させ、モータ出力（Ｐ＋α）とした状態でアームを駆動し（Ｓ３２）、そのときの角度検出器８の値（θ２）を取得する（Ｓ３３）。ただし、モータ出力の増加量（α）は、関節部５の静摩擦力より十分大きい値とする。これにより、実際には弾性変形していない状態を弾性変形したと誤判定するおそれを低減することができ、中点を推定する精度を向上させることができる。
【０１２９】
このように、ロボットシステム１は、異なる２つの押し当て力で押し当てたときの角度検出器８の値をそれぞれ取得している。このとき、取得した２つの角度検出器８の値とモータ出力との関係が、図８に示すものになったとする。
さて、同じ方向に押し当てている場合には、モータ出力に差がなければ弾性変形分にも差は生じないと考えられる。そのため、図８に示したモータ出力と角度検出器８の値との関係を、モータ出力の差分と弾性変形分の差分（角度検出器８の値の変化量）との関係に置き換えてみる。
【０１３０】
この場合、モータ出力の差分と弾性変形分の差分との関係は、図９に示すように、座標原点と点（α、Ｄα）を通り、傾きが（Ｄα）／αである比例直線（Ｋ）にて示されることになる。ただし、Ｄα＝θ２−θ１である。また、この比例直線（Ｋ）は、モータ出力の変化に伴う角度検出器８の値の変化を示すものであり、本実施形態における一端側のストッパ４ａの弾性変形特性に相当する。なお、図９では説明の簡略化のために正負を問わない状態で示しているが、押し当て方向が逆であれば、弾性変形分の差分の符号も逆になる。
【０１３１】
ロボットシステム１は、モータ出力と角度検出器８の値との関係を特定すると、押し当て方向を逆向きに設定し（Ｓ６）、同じ目標速度（ｖｃ）に速度制御を開始し（Ｓ７）、ストッパ４に接触したか否かを判定する（Ｓ８）。ロボットシステム１は、ストッパ４に接触したと判定すると（Ｓ８：ＹＥＳ）、モータ出力（Ｐ）の方向が押し当て方向と一致するまで速度制御を継続した後（Ｓ３４：ＹＥＳ）、モータ出力をその時の値に固定して速度制御を解除して（Ｓ９）、角度検出器８の値（θ３）を取得する（Ｓ１０）。また、このときのモータ出力をＰ３とする。
【０１３２】
可動範囲の両端で角度検出器８の値を取得すると、ロボットシステム１は、原点を算出する（Ｓ１１）。
さて、可動範囲の一端側つまりは２段階の押しつけを行った側であるステップＳ３１で取得した角度検出器８の値（θ１）と、他端側であるステップ１０で取得した角度検出器８の値（θ３）とには、それぞれ逆向きの弾性変形分が含まれている。
この場合、モータ出力が同じであれば、上記したように弾性変形分には差がないことから、θ１とθ３との平均を取ることにより、中点を原点とする原点合わせを行うことができる。
【０１３３】
一方、モータ出力（Ｐ３）が例えばモータ出力（Ｐ１）よりも大きい場合には、θ３にはθ１よりも大きい弾性変形分が含まれていると考えられるため、単純に平均値を取った場合には、中点が他端側にずれることになり正しく原点合わせを行うことができない。
そこで、ロボットシステム１は、上記した図９に示す関係を利用して、他端側と同じ押し当て状態にしたと仮定した場合に得られる一端側の角度検出器８の値を推定する。
【０１３４】
具体的には、ロボットシステム１は、図１０に示すように、一端側のモータ出力と角度検出器８の値との関係から、モータ出力がＰ３である場合に得られると推定される角度検出器８の値（θα）を取得する。より具体的には、他端側に押し当てを行った際のモータ出力（Ｐ３）における弾性変形特性（Ｋ）を延長した仮想線（Ｋ２）上の値に基づいて、一端側においてモータ出力（Ｐ３）でアームを押し当てたと仮定した場合における一端側の角度検出器８の値（θα）を推定する。
【０１３５】
これにより、可動範囲の両端において同じ押し当て状態であると仮定した場合における角度検出器８（θα、θ３）が求まり、それらの平均を取ることにより、可動範囲の両端において同じ押し当て状態とした場合の中点が求まる。そして、求めた中点を原点に設定することにより、正しく原点合わせを行うことができる。
【０１３６】
以上説明した構成によれば、次のような効果を得ることができる。
ロボットシステム１は、一端側において、アームを異なるモータ出力でストッパ４に対して複数回押し当て、複数回押し当てた際に取得したそれぞれのモータ出力と角度検出器８の値とに基づいて、モータ出力の変化に伴う角度検出器８の値の変化を示す一端側のストッパ４ａの弾性変形特性を求め、他端側においてアームをストッパ４ｂに対して押し当てた際のモータ出力と同じモータ出力で一端側に押し当てたと仮定した場合に得られる一端側の角度検出器８の値を、弾性変形特性に基づいて推定する。
【０１３７】
そして、ロボットシステム１は、一端側における角度検出器８の推定値と他端側で実測した角度検出器８の値との平均を取ることで、つまりは、可動範囲の両端において同じ押し付け状態を再現することで、可動範囲の中点を特定して原点合わせを行う。
この場合、一端側のストッパには構造に影響を与えない程度のモータ出力で押し当てることから、アームやストッパの変形や損傷を招くことなく原点合わせを行うことができる等、第１実施形態と同様の効果を得ることができる。
【０１３８】
また、アームを移動させる際に重力の影響を受ける場合であっても、可動範囲の両端において同等の押し当て状態とした場合の角度検出器８の値を取得できることから、アームの自重によらず、また、ストッパ４の位置によらず、正しく原点合わせを行うことができる。
また、モータ出力と実際にアームに発揮されるモーメントの関係が既知であれば、減速機７等の構造物の剛性が得られるため、自重によるたわみ分を補正した角度制御にも活用することができる。
【０１３９】
この場合、重力がかかる下限ストッパ４ａではアームの自重とモータ出力の両方が作用するが、重力に逆らって押し当てる上限ストッパ４ｂではモータ６に必要とされる出力は大きくなる。そのため、下限ストッパ４ａに一度押し当ててから上限ストッパ４ｂに２段階での押し当てを行うことで構造物に掛かる力を小さくすることができ、損傷をより抑えることができる。
【０１４０】
また、実施形態では２段階の押し当てを行う例を示したが、３段階以上の押し当てをおこなうこともできる。
また、アームとストッパ４とが接触した状態から変化したモータ出力の差分に基づいて角度検出器８の値を推定する構成とすることもできる。
【０１４１】
また、実施形態では一端側での複数段階の押し当てと他端側での推定とを１回行う例を示したが、複数段階の押し当てと他端側での推定を複数回行うことができる。これにより、複数のデータから推定を行うことができ、より正確な原点合わせを行うことができる。
また、アームとストッパ４とが接触した状態から変化したモータ出力の差分に基づいて角度検出器８の値を推定する構成とすることもできる。
【０１４２】
また、一端側のストッパ４ａへの押し当てを行った後に他端側のストッパ４ｂまでアームを回転させる際には、角度制御によりストッパ４の付近まで回転させることにより、アームの回転に要する時間を短縮し、原点合わせの作業時間を短縮することもできる。
また、一端側に３回以上の押し当てを行い、弾性変形特性を直線ではなく曲線や多項式で近似することもできる。
【０１４３】
（その他の実施形態）
本発明は上記した各実施形態で例示した構成にのみ限定されるものではなく、その要旨を逸脱しない範囲で各種の変形や拡張あるいは組み合わせを行うことができる。
各実施形態では、アームがストッパ４に接触した時点で速度制御を解除する例を示したが、アームがストッパに接触した後も速度制御を継続することもできる。つまり、アームを、速度制御によって定まる押し当て力でストッパ４に押し当てることができる。この場合の具体的な処理の流れは、例えば図４、図６、図７のステップＳ９を省略した流れになる。
【０１４４】
アームを速度制御している場合には、アームの速度によってストッパ４への押し当て力が決まるため、正回転時と逆回転時とで同じ速さでアームを回転させれば、同じ押し当て力でストッパ４に押し当てられることになる。そして、同じ押し当て力であればストッパ４の弾性変形量も同じになることから、ストッパ４間の中央の位置を推定することができ、原点合わせを行うことができる。
【０１４５】
また、アームがストッパに接触した後も速度制御を継続する方法は、アームがストッパ４に押し付けられる際の状況がほぼ等しいと考えられる場合に特に有益である。例えば図１に示すストッパ４ａとストッパ４ｃのように、アームの回転中心を通る仮想的な鉛直線に対してストッパ４が正回転側と逆回転側とで線対称に設けられている場合であれば、アームは機械的にほぼ同じ状況でストッパに押し付けられるとともに、重力による影響もほぼ等しいと同じと考えられるため、アームを同じ押し当て力でストッパ４に押し当てられると考えられる。
【０１４６】
また、アームをストッパ４に押し当てる場合、重力の影響によりモータ出力が相対的に大きくなる側のストッパ４への押し当てを行った後に、モータ出力が相対的に小さくなる側のストッパ４への押し当てを行うことができる。例えば、図１に示すストッパ４ａとストッパ４ｂとで可動範囲を規定している場合には、ストッパ４ｂに押し当てて角度検出器８の値を取得し、ストッパ４ａに押し当てて角度検出器８の値を取得する順番で原点合わせを行う。
【０１４７】
この場合、逆の順番で押し当てを行うと、同じ力で他端側に押し当てた際に重力トルク分だけモータ出力が足りなくなるおそれがあり、その場合には再度の押し当てを行う必要がある。これに対して、重力の影響によりモータ出力が相対的に大きくなる側のストッパへの押し当てを先に行えば、そのモータ出力のほうが相対的に大きくなることから、モータ出力が不足する自体を回避でき、再度の押し当てが不要となるため、効率よく原点合わせを行うことができる。
【０１４８】
第３実施形態ではストッパ４の位置が重力の影響が大きく異なる場合を例示したが、両端のストッパ４において重力の影響が同程度であると予想される場合には、一端側のストッパ４の弾性変形特性を取得して他端側の角度検出器８の値を推定する構成とすることもできる。すなわち、アームの可動範囲の両端に設けられているストッパ４が、アームに下方から接触し、接触した状態において当該アームの自重が加わる位置に設けられている場合に、一端側においてアームを異なるモータ出力でストッパに対して複数回押し当てることで一端側の弾性変形特性を求め、他端側に押し当てた際のモータ出力と弾性変形特性とから、一端側と同じ押し当て状態にした際の他端側の角度検出器の値を推定することができる。
【符号の説明】
【０１４９】
図面中、１はロボットシステム、２はロボット、２ｃは第１アーム（アーム）、２ｄは第２アーム（アーム）、３はコントローラ（制御部）、４はストッパ、４ａは下限ストッパ（ストッパ）、４ｂは上限ストッパ（ストッパ）、４ｃは上限ストッパ（ストッパ）、６はモータ、８は角度検出器、２０はロボット、２０ｂは第１アーム（アーム）、２０ｃは第２アーム（アーム）、２０ｄはシャフト（アーム）を示す。
【図１】
2019018327.tif 000003
【図２】
2019018327.tif 000004
【図３】
2019018327.tif 000005
【図４】
2019018327.tif 000006
【図５】
2019018327.tif 000007
【図６】
2019018327.tif 000008
【図７】
2019018327.tif 000009
【図８】
2019018327.tif 000010
【図９】
2019018327.tif 000011
【図１０】
2019018327.tif 000012