(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0020】
図1から
図8を参照して、実施の形態におけるロボット制御装置について説明する。本実施の形態のロボット制御装置は、ロボットに指令を送出する制御部と、ロボットに取り付けられたセンサ等の検出器とを備える。
【0021】
図1は、本実施の形態におけるロボットシステムの概略図である。ロボットシステムは、ワークWを把持するハンド17と、ハンド17を移動するロボット1と、ロボット1に動作指令を送出する制御部本体2aとを備える。本実施の形態のロボット1は、多関節ロボットである。ハンド17は、ワークWを把持したり解放したりする。アーム12は、ハンド17を支持しながらハンド17を移動させる。アーム12はベース部11に支持されている。ベース部11は、設置面20に固定されている。
【0022】
本実施の形態のアーム12は、複数の関節部13を含む。ロボット1は、それぞれの関節部13を駆動するアーム駆動装置を含む。アーム駆動装置は、関節部13の内部に配置されている駆動モータ14を含む。駆動モータ14が駆動することにより、アーム12を関節部13にて所望の角度に曲げることができる。また、本実施の形態のロボットは、アーム12全体が鉛直方向を回転軸として回転可能に形成されている。アーム駆動装置は、アーム12全体を回転させる駆動モータを備えている。
【0023】
ロボット1は、ハンド17を閉じたり開いたりするハンド駆動装置を備える。本実施の形態のハンド駆動装置は、空気圧によりハンド17を駆動する。ハンド駆動装置は、ハンド17に接続されたハンド駆動シリンダ18と、ハンド駆動シリンダ18に圧縮空気を供給するための空気ポンプおよび電磁弁を含む。
【0024】
図2に、本実施の形態のロボット制御装置とアーム駆動装置の概略図を示す。制御部2は、制御部本体2aを含む。制御部本体2aは、バスを介して互いに接続されたCPU(Central Processing Unit)、RAM(Random Access Memory)、およびROM(Read Only Memory)等を有するデジタルコンピュータを含む。アーム駆動装置およびハンド駆動装置は、制御部2により制御されている。駆動モータ14の回転角およびハンド駆動シリンダ18の空気圧は制御部2により制御されている。
【0025】
制御部2には、例えばロボット1の動作を行うための動作プログラムが入力される。制御部2の主制御部57は、動作プログラム等に基づいてロボット1を駆動するための動作指令を送出する。動作指令は、アーム駆動装置およびハンド駆動装置等に送出される。
【0026】
図2には、1つの関節部13を駆動するためのアーム駆動装置が記載されている。アーム駆動装置は、駆動モータ14の回転力を増大する減速機41を含む。本実施の形態では、関節部13の内部に駆動モータ14および減速機41が配置されている。減速機41は、入力軸43と、複数の歯車42a,42bと、出力軸44とを含む。入力軸43は、駆動モータ14の回転シャフト21に連結されている。減速機41の出力軸44は、関節部13を駆動する為の動力伝達部材としてのリンク部材48に連結されている。
【0027】
駆動モータ14の回転シャフト21が矢印91に示すように回転すると、回転力は、減速機41の入力軸43および歯車42a,42bを介して出力軸44に伝達される。そして、減速機41の出力軸44は、矢印92に示すようにリンク部材48を回転させる。
【0028】
ロボット制御装置3は、複数の回転角検出器を備える。ロボット制御装置3は、減速機41の入力軸43の回転角を検出する第1の回転角検出器として第1のエンコーダ31を含む。本実施の形態では、第1のエンコーダ31により検出される回転角を第1の回転角と称する。第1のエンコーダ31は、駆動モータ14の回転シャフト21に接続されている。また、ロボット制御装置3は、減速機41の出力軸44の回転角を検出する第2の回転角検出器としての第2のエンコーダ32を含む。本実施の形態では、第2のエンコーダ32により検出される回転角を第2の回転角と称する。
【0029】
本実施の形態の第1のエンコーダ31および第2のエンコーダ32は、アブソリュートエンコーダである。アブソリュートエンコーダは、相対的な回転角を検出するのではなく、所定の基準位置に対する絶対的な回転角を検出する。アブソリュートエンコーダは、予め定められた範囲内の回転角を検出することができる。なお、第1の回転角検出器および第2の回転角検出器は、それぞれの回転軸の回転角を検出可能な任意の装置を採用することができる。
【0030】
図3に、本実施の形態における第2のエンコーダおよびリンク部材の概略正面図を示す。リンク部材48は円板状に形成されている。第2のエンコーダ32は、リンク部材48の周方向に延びる端面に配置されているスケール32bと、スケール32bの目盛りを読取る検出素子32aとを含む。スケール32bの表面には、360°を第2のエンコーダ32の分解能にて除算した角度ごとに目盛りが刻まれている。検出素子32aは、スケール32bに対向するようにスケール32bに近接して配置されている。第1のエンコーダ31についても、第2のエンコーダ32と同様の構造を有する。
【0031】
図4に、本実施の形態のエンコーダにより検出される回転角を説明する概略図を示す。
図4には、減速機41の入力軸43や出力軸44に対応する回転軸60が示されている。回転軸60には基準位置となる基準点65が設定されている。基準点65は、例えば、回転角が0°に対応する。矢印94に示すように回転軸60が回転すると、基準点65に対して移動点64が移動する。そして基準点65および回転中心を結ぶ線と、移動点64および回転中心を結ぶ線とのなす角度が回転角Rになる。本発明では、回転軸60の1回転の範囲内、すなわち0°以上360°未満の回転角を「1回転内の回転角」と称する。本実施の形態におけるエンコーダは、1回転内の回転角Rは、0°以上360°未満の範囲内で任意の角度を検出することができる。すなわち、第1のエンコーダ31および第2のエンコーダ32は、1回転内の測定範囲が0°以上360°未満である。
【0032】
回転角が、360°以上になったり0°未満になったりする場合には、回転軸60の回転数を記憶装置に記憶する。この制御により、回転角の上限や下限なしに回転角を検出することができる。たとえば、回転数が2回転(720°)であり1回転内の回転角が90°の場合には、回転角は810°になる。
【0033】
図2を参照して、本実施の形態の制御部2は、第1のエンコーダ31が検出する第1の回転角に関する情報を記憶する第1の回転角記憶部51を含む。第1の回転角記憶部51は、入力軸43の1回転内の回転角および回転数を記憶する。本実施の形態における第1の回転角記憶部51は、第1のエンコーダ31の本体に取り付けられている内蔵メモリである。また、制御部2は、第2のエンコーダ32が検出する第2の回転角に関する情報を記憶する第2の回転角記憶部52を含む。本実施の形態の第2の回転角記憶部52は、出力軸44の1回転内の回転角および回転数を記憶する。第2の回転角記憶部52は、制御部本体2aに配置されている。
【0034】
図4を参照して、回転角が360°以上になる場合や0°未満になる場合には、エンコーダが0°の基準点65を超えたことを検出する。そして、回転角が360°以上になった場合には回転数を1増加する。または回転角が0°未満になった場合には回転数を1減少する。そして、記憶部に記憶された回転数とエンコーダにより検出される1回転内の回転角に基づいて、任意の時刻における回転角を検出することができる。回転角の計算は、それぞれのエンコーダまたは制御部本体2aにおいて実施することができる。
【0035】
図2を参照して、主制御部57は、第1の回転角と第2の回転角との差に基づいて、減速機41のバックラッシュや減速機41の入力軸43または出力軸44の捩じれ等により生じる回転角の誤差を算出することができる。そして、主制御部57は、算出された誤差を打ち消す様に駆動モータ14を制御することができる。第2のエンコーダ32の出力を用いて駆動モータ14の動作指令を修正する制御を行うことができる。この結果、ロボットの位置や姿勢の誤差を減少させることができる。例えば、ロボット1の先端点の位置を正確に制御することができる。
【0036】
ロボット制御装置3は、停止すると外部からの連続的な電気の供給が停止される。本実施の形態のロボット制御装置3は、ロボット制御装置3が停止した状態、すなわちロボット制御装置の主電源が遮断された状態においても、第1のエンコーダ31および第1の回転角記憶部51に電気を供給するバックアップ電源58を備える。バックアップ電源58は、補助電源として機能する。ロボット制御装置3が停止した場合には、制御部本体2aおよびエンコーダ等の検出器に供給される電気が遮断される。一方で、ロボット制御装置3が停止している期間中にも、第1のエンコーダ31および第1の回転角記憶部51にはバックアップ電源58により電気が供給されるために、減速機41の入力軸43の第1の回転角の検出を継続することができる。
【0037】
特に、本実施の形態の第1の回転角記憶部51として機能する内蔵メモリは、電気の供給が停止すると、記憶していた情報を消失する揮発性メモリである。しかしながら第1の回転角記憶部51に、バックアップ電源58が接続されていることにより、ロボット制御装置3を停止している状態においても第1の回転角を記憶しておくことができる。
【0038】
一方で、第2の回転角記憶部52は、電気の供給が停止しても回転角を記憶している不揮発性メモリである。第2の回転角記憶部52にバックアップ電源が接続されていないが、ロボット制御装置3を停止している状態でも第2の回転角を記憶しておくことができる。しかしながら、ロボット制御装置3が停止した場合には、第2のエンコーダ32による第2の回転角の検出は停止する。
【0039】
ところで、ロボット制御装置3の停止期間中に出力軸44が回転する場合がある。たとえば、ロボット制御装置3の電源を遮断した時の惰走により出力軸44が回転する場合がある。または、ロボット1の保守や点検のために出力軸44を動かす場合がある。
図4には、ロボット制御装置3を停止した時の移動点61と起動した時の移動点62とが記載されている。ロボット制御装置3の停止期間中に、回転軸60が回転して、矢印93に示す様に移動点が基準点65を通過する場合がある。この場合には、回転数が1つ増大するが、第2のエンコーダ32が停止しているために回転数は変更されない。ロボット制御装置3を起動したときには、停止時の回転数に基づいて第2の回転角が検出されてしまう。このために、ロボット制御装置3を起動したときに第2の回転角を誤って検出する場合がある。
【0040】
本実施の形態のロボット制御装置3の第1の制御では、ロボット制御装置3の起動時に第2のエンコーダ32により検出される第2の回転角を正確な値に更新する制御を実施する。
【0041】
図2を参照して、制御部2は、第1の回転角記憶部51に記憶されている第1の回転角および第2の回転角記憶部52に記憶されている第2の回転角を更新する回転角更新部53を備える。回転角更新部53は、第1の回転角記憶部51に記憶されている第1の回転角を読取る機能と、第1の回転角記憶部51に記憶されている第1の回転角を新たな値に更新する機能とを有する。同様に、回転角更新部53は、第2の回転角記憶部52に記憶されている第2の回転角を読み取る機能と、第2の回転角記憶部52に記憶されている第2の回転角を新たな値に更新する機能とを有する。
【0042】
また、後述するように、制御部2は、第1の回転角および第2の回転角のうち少なくとも一方の更新が必要か否かを判別する更新判定部54と、第1のエンコーダ31または第2のエンコーダ32の異常を検出する異常検出部55とを含む。
【0043】
図5に、第2の回転角を更新する第1の制御を説明するグラフを示す。横軸は、第1のエンコーダ31にて出力される第1の回転角と第2のエンコーダ32にて検出される第2の回転角とを示している。すなわち、横軸は、減速機41の入力軸43の第1の回転角および出力軸44の第2の回転角を示している。縦軸は、それぞれの回転軸の1回転内の回転角を示している。縦軸は0°以上360°未満の範囲である。横軸の回転角は、無限に大きくしたり小さくしたりすることができる。
【0044】
この例では、ロボット制御装置3を停止する時に、第1のエンコーダ31により第1の回転角R1Sが検出され、第2のエンコーダ32により第2の回転角R2Sが検出されている。第1の回転角R1Sと第2の回転角R2Sとは、互いに近接している。第1の回転角R1Sと第2の回転角R2Sとの僅かな差ΔRは減速機41のバックラッシュ等に起因する誤差に相当する。そして、ロボット制御装置3が停止した後にアーム駆動装置の惰走等により、回転角が増大する方向に減速機41が駆動している。
【0045】
減速機41が駆動すると、第1の回転角R1Sから第1の回転角R1Aに移行する。この時に、第1の回転角は、720°(360°×n)の基準点を跨いでいる。ここでの例では、回転数が1回転から2回転に増大する。第1のエンコーダ31は、ロボット制御装置3の停止期間中にも電気が供給されているために、ロボット制御装置3を起動したときに正確な第1の回転角R1Aを検出することができる。
【0046】
第1の回転角R1Sと第2の回転角R2Sとの差ΔRは、減速機41が駆動してもほぼ一定に維持される。第2のエンコーダ32により検出されるべき正確な値は、第2の回転角R2ARである。ところが、ロボット制御装置3の停止期間中には、第2の回転角記憶部52に記憶されている回転数が変化せずに1回転に維持されている。このため、ロボット制御装置3を起動した時の第2のエンコーダ32により検出される値は第2の回転角R2Aになる。なお、720°から第2の回転角R2ARまでの角度差RXは、360°から第2の回転角R2Aまでの角度差RXとほぼ等しくなる。
【0047】
図6に、第2の回転角を更新する第1の制御のフローチャートを示す。
図5および
図6を参照して、第1の制御は、ロボット制御装置3を停止状態から起動した時に行うことができる。また、第1の制御は、
図2における回転角更新部53にて実施することができる。この制御は、ロボット制御装置3を停止する時の第2の回転角と、ロボット制御装置3を起動した時の第2の回転角とに変化が有る場合に好適である。
【0048】
ロボット制御装置3を停止したときの第1の回転角R1Sは第1の回転角記憶部51に記憶されている。また、ロボット制御装置3を停止したときの第2の回転角R2Sについても、第2の回転角記憶部52に記憶されている。
【0049】
ステップ101においては、第2の回転角に関する停止時と起動後との差DAを算出する。ここでは、ロボット制御装置3を起動した時に第2の回転角記憶部52に記憶されている回転数に基づいて検出される第2の回転角R2Aからロボット制御装置3を停止する時の回転角R2Sを減算した差DAを算出する。
【0051】
次に、ステップ102においては、第1の回転角に関する停止時と起動後との差DBを算出する。ここでは、ロボット制御装置3を起動した時に第1のエンコーダ31により検出される第1の回転角R1Aからロボット制御装置3を停止する時の第1の回転角R1Sを減算した差DBを算出する。
【0053】
次に、ステップ103においては、
図5における回転角の差DCを算出する。回転角の差DCは、本来、第2のエンコーダ32が検出すべき正確な第2の回転角R2ARと、起動時に実際に第2のエンコーダ32により検出された第2の回転角R2Aとの差に相当する。ここでは、差DCは、前述の第2の回転角に関する差DAと、第1の回転角に関する差DBとの差に基づいて算出することができる。
【0054】
DC=ABS(DB−DA) …(3)
【0055】
なお、前述のように第1の回転角と第2の回転角との差ΔRは、ロボット制御装置を停止した後もほぼ一定に維持される。このために、差DBの大きさと差DAの大きさとを加算することにより、差DCを精度よく算出することができる。差DCは、回転数の相違に対応する。このために、差DCは、理想的には360°の倍数になる。ところが、測定誤差等により、正確に360°の倍数にならない場合がある。このために、本実施の形態の制御では、回転数の誤差を推定する。
【0056】
ステップ104においては第2の回転角に関する差DCを360で除算したときの商Q1および余りR1を算出する。ステップ105においては、余りR1が判定値よりも大きいか否かを判別する。本実施の形態では、判定値として360°の半分の180°を採用している。余りR1が180°よりも大きい場合には、ステップ106に移行する。この場合には、余りR1は、360°未満であり、更に360°の近傍の値である。ステップ106においては、商Q1に1を加算し、ステップ107に移行する。
【0057】
ステップ105において、余りR1が180°以下の場合には、ステップ107に移行する。この場合には、余りR1が零よりも大きな値であり、零の近傍の値である。ステップ105およびステップ106において定められた商Q1が第2の回転角の回転数の誤差に相当する。すなわち、第2の回転角が第1の回転角に最も近接する第2の回転角に関する回転数の誤差を算出している。なお、判定値としては、180°よりも大きな値や小さな値であっても構わない。判定値としては、測定誤差等を考慮した値であれば構わない。
【0058】
ステップ107においては、起動時の第1の回転角R1Aが停止時の第1の回転角R1Sに比べて正方向に移動しているか否かを判別する。すなわち、停止期間中の減速機の回転方向を判別する。
図5に示す例では、正方向に移動していると判別することができる。
【0059】
ステップ107において、第1の回転角が正方向に移動している場合には、ステップ109に移行する。ステップ109においては、起動時に第2のエンコーダ32により検出される第2の回転角R2Aに(360°×Q1)を加算する。つまり算出した回転数の誤差に相当する回転角を加算する。または、第2の回転角記憶部52に回転数が記憶されている場合には、記憶されている回転数に算出した商Q1を加算しても構わない。そして、ステップ110に移行する。
【0060】
ステップ107において、第1の回転角が正方向に移動していない場合には、第1の回転角が負方向に移動している。この場合には、ステップ108において、起動時に第2のエンコーダにより検出される第2の回転角から(360°×Q1)を減算する。すなわち、算出した回転数の誤差に相当する回転角を減算する。または、第2の回転角記憶部52に回転数が記憶されている場合には、記憶されている回転数に算出した商Q1を減算しても構わない。そして、ステップ110に移行する。
【0061】
ステップ110においては、ステップ108およびステップ109において算出された第2の回転角R2ARを第2の回転角記憶部52に記憶する。起動時に検出される第2の回転角R2Aを第2の回転角R2ARに置き換える。このように、第2の回転角を更新することができる。
【0062】
本実施の形態の回転角更新部53は、ロボット制御装置3が停止した状態から起動した時に、第1の回転角記憶部51に記憶されている第1の回転角および第2の回転角記憶部52に記憶されている第2の回転角のうち少なくとも一方と、第1のエンコーダ31により検出される第1の回転角および第2のエンコーダ32により検出される第2の回転角のうち少なくとも一方とに基づいて、第1の回転角または第2の回転角を更新する。この制御により、第2のエンコーダ32に接続されるバックアップ電源がなくても、ロボット制御装置の起動後に、第1の回転角および第2の回転角のうち少なくとも一方の回転角を更新することができる。特に回転角の回転数を更新することができる。
【0063】
第1の制御において、回転角更新部53は、ロボット制御装置3が停止する時に検出される第1の回転角および第2の回転角と、ロボット制御装置3が停止した状態から起動した時に検出される第1の回転角および第2の回転角とに基づいて、第2の回転角を更新している。
【0064】
また、回転角更新部53は、ロボット制御装置3を停止するときの第1の回転角とロボット制御装置3を起動した時に第1のエンコーダ31にて検出される第1の回転角との差を算出する。回転角更新部53は、ロボット制御装置3を停止するときの第2の回転角とロボット制御装置3を起動したときに第2のエンコーダ32にて検出される第2の回転角との差を算出する。そして、回転角更新部53は、これらの差に基づいて、第2の回転角に関する回転数の誤差を算出し、算出した回転数に基づいて第2の回転角記憶部に記憶されている第2の回転角を更新している。
【0065】
本実施の形態の第1の制御を実施することにより、ロボット制御装置3を起動した時に、第2の回転角が第1の回転角に最も近接するように第2の回転角の回転数を更新することができる。第2のエンコーダにより検出される第2の回転角を正確な値に更新することができる。このために、ロボットの位置および姿勢の制御を精度よく実施することができる。または、誤操作等により第1のエンコーダ31により検出される第1の回転角に対する第2のエンコーダ32により検出される第2の回転角の相対関係が消失した場合にも、第2の回転角を正確に設定し直すことができる。
【0066】
また、
図2を参照して、第2のエンコーダ32および第2の回転角記憶部52にバックアップ電源を接続することにより、ロボット制御装置3の停止期間中にも第2の回転角を正確に検出することができる。すなわち、ロボット制御装置3の起動時においても第2の回転角を正確に検出することができる。しかしながら、本実施の形態の第1の制御を実施することにより、第2のエンコーダ32および第2の回転角記憶部52に電気を供給するバックアップ電源がなくても、ロボット制御装置3の起動時に第2の回転角の更新を行うことができる。
【0067】
本実施の形態の制御部2は、第2の回転角記憶部52に記憶されている第2の回転角の更新が必要か否かを判別する更新判定部54を含む。更新判定部54は、ロボット制御装置3が停止した状態から起動をしたことを検出した場合に、回転角更新部53に第2の回転角を更新する指令を送出することができる。
【0068】
ところで、
図5を参照して、第1の回転角と第2の回転角との差ΔRは、ロボットが駆動している期間中にもほぼ一定に維持される。ところが、アーム駆動装置やエンコーダの故障等により、差ΔRが大きくなる場合がある。本実施の形態の更新判定部54は、ロボット1が駆動している期間中に、第1の回転角と第2の回転角との差ΔRを検出する。そして、更新判定部54は、差ΔRが予め定められた判定値を超えた場合に、第2の回転角の更新を禁止する制御を実施する。この判定値としては、例えば1°程度の小さな値を採用することができる。
【0069】
例えば、アーム駆動装置等に異常が発生した場合には、差ΔRが大きくなる場合がある。このような状態で、第2の回転角の更新を行っても、正確な更新を行うことができない。このために、更新判定部54は、第2の回転角の更新を禁止する制御を実施する。この制御により、不必要な第2の回転角の更新を排除することができる。
【0070】
次に、本実施の形態における第2の制御について説明する。
図2を参照して、バックアップ電源58に蓄電池を含む場合には、ロボット制御装置3の停止期間中に蓄電池の電気容量が零になる場合がある。この場合には、第1の回転角記憶部51に記憶されている第1の回転角に関する情報が消失する。または、第1のエンコーダ31を修理する場合等に、第1の回転角記憶部51に記憶されている第1の回転角に関する情報が消失する場合がある。
【0071】
本実施の形態の第2の制御では、第2の回転角記憶部52に記憶されている第2の回転角に基づいて第1の回転角記憶部51に記憶されている第1の回転角を更新する。第2の制御は、ロボット制御装置3の停止期間中に惰走等により減速機41が駆動することがない場合に好適である。
【0072】
図7に、本実施の形態の第2の制御を説明するグラフを示す。
図7の例では、ロボット制御装置3を停止する時に、第2の回転角記憶部52には、第2のエンコーダ32により検出された第2の回転角R2Aが記憶されている。また、第1の回転角記憶部51には、第1のエンコーダ31により検出された第1の回転角R1ARが記憶されている。
【0073】
図2および
図7を参照して、ロボット制御装置3の停止期間中には、第1の回転角および第2の回転角は一定に維持されている。そして、停止期間中にバックアップ電源58の蓄電池の電気容量が零になった場合には、第1の回転角記憶部51に記憶されていた第1の回転角の情報が消失する。このような状態で、蓄電池を充電した後に、再びロボット制御装置3を起動した場合には、第1の回転角の情報のうち回転数に関する情報は消失している。すなわち、第1の回転角の回転数は零回転になる。第1のエンコーダ31は、1回転内の回転角を検出し、第1の回転角R1Aを検出する。ここで、0°と第1の回転角R1Aとの角度差RYは、720°と第1の回転角R1ARとの角度差RYに等しくなる。
【0074】
一方で、第2の回転角R2Aに関する情報は、第2の回転角記憶部52に記憶されているために、消失せずに正しい回転数および1回転内の回転角が記憶されている。このために、ロボット制御装置3を起動したときに、第2のエンコーダ32は、停止したときと同一の第2の回転角R2Aを出力する。この状態において、第1の回転角を更新する第2の制御を実施する。
【0075】
図8に、本実施の形態における第1の回転角を更新する第2の制御のフローチャートを示す。
図8に示す制御は、例えば、ロボット制御装置3が停止している状態から起動した時に実施することができる。
【0076】
図7および
図8を参照して、ステップ201において回転角の差DGを算出する。回転角の差DGは、第2の回転角記憶部52に記憶されていた第2の回転角R2Aと、起動後に第1のエンコーダ31により検出された回転数が零の第1の回転角R1Aとの差である。ここでは、第2の回転角R2Aから第1の回転角R1Aを減算した差DGを算出する。なお、第2の回転角記憶部52に記憶されていた第2の回転角の代わりに、ロボット制御装置3の起動後に第2のエンコーダ32により検出された第2の回転角を用いても構わない。
【0078】
第1の回転角と第2の回転角との差ΔRは、非常に小さいために、回転角の差DGは、360の整数倍に近い値になっていると考えられる。ここでは、第1の回転角に関する回転数の情報が消失しているために、第1の回転角に関する回転数を設定する。次の回転数の誤差を算出する制御は、第1の制御と同様である。
【0079】
ステップ202においては、回転角の差DGを360で除算したときの商Q2と余りR2を算出する。
【0080】
次に、ステップ203においては、余りR2が判定値としての180°よりも大きいか否かを判別する。余りR2が180°よりも大きい場合には、余りRは、360°未満であり、更に360°に近い値である。この場合には、ステップ204に移行して商Q2に1を加算する。そして、ステップ205に移行する。
【0081】
ステップ203において、余りR2が180°以下の場合には、商Q2を変更せずに、ステップ205に移行する。この場合には、余りR2は、ほぼ零である。なお、ステップ203における判定値は、第1の制御と同様に180°を用いているが、この形態に限られず、180°よりも大きくても小さくても構わない。判定値としては、測定誤差等を考慮した値であれば構わない。
【0082】
次に、ステップ205においては、第1のエンコーダ31により検出された第1の回転角R1Aに(360°×Q2)を加算して、第1の回転角を算出する。そして、ステップ206において、算出された第1の回転角R1ARを第1の回転角記憶部51に記憶する。
【0083】
第2の制御では、ロボット制御装置が停止した状態から起動した時に、回転角更新部53は、第2の回転角記憶部52に記憶されている第2の回転角または起動後に第2のエンコーダ32により検出される第2の回転角と、起動後に第1のエンコーダ31により検出される第1の回転角とに基づいて、第1の回転角記憶部51に記憶されている第1の回転角を更新する。特に、第2の制御においては、第2の回転角記憶部に記憶されている第2の回転角と、第1の回転角検出器により検出される第1の回転角との差に基づいて、第1の回転角が第2の回転角に最も近接する第1の回転角に関する回転数を算出し、算出した回転数に基づいて第1の回転角を更新している。
【0084】
第2の制御を行うことにより、バックアップ電源58の不調等により第1の回転角記憶部51に記憶されている第1の回転角に関する情報が消失しても、第1のエンコーダ31に検出される第1の回転角を正しく設定しなおすことができる。特に、第1の回転角の回転数を正しく更新することができる。また、第1の回転角記憶部51のマスタリングデータが消失した場合にも、第2の回転角記憶部52に記憶されている第2の回転角に関する情報に基づいてマスタリングデータを復元することができる。
【0085】
本実施の形態の第2の制御は、バックアップ電源58を復旧した後に行う制御に限られず、任意の状態において第1の回転角に関する情報が消失した場合に、第2の回転角記憶部52に記憶されている第2の回転角の情報に基づいて、第1の回転角の情報を更新することができる。例えば、第1のエンコーダ31に異常が生じて復旧した時に、第1の回転角の情報を第2の回転角記憶部に記憶されている第2の回転角の情報から復元することができる。
【0086】
本実施の形態の制御部2は、第1のエンコーダ31および第2のエンコーダ32の異常を検出する異常検出部55を含む。更新判定部54は、異常検出部55が第1のエンコーダ31の異常を検出した場合に第2の回転角の更新を禁止することができる。また、更新判定部54は、異常検出部55が第1の回転角検出器の異常からの復旧を検出した場合に、第1の回転角の更新を実施すると判別することができる。
【0087】
例えば、異常検出部55は、第1のエンコーダ31に電気を供給するケーブルが断線したことを検出し、第1の制御を禁止する。更に、更新判定部54は、ケーブルが修理されて正常に通電されていることを検出し、第1の回転角の更新が必要であると判別することができる。更新判定部54は、第1の回転角の更新の指令を回転角更新部53に送出する。この制御により、不必要な第2の回転角の更新を排除することができる。また、復旧後に第1の回転角を正確な値に更新することができる。
【0088】
本実施の形態においては、多関節ロボットを例示して説明したが、この形態に限られず、任意のロボット制御装置に本発明を適用することができる。
【0089】
上述のそれぞれの制御においては、機能および作用が変更されない範囲において適宜ステップの順序を変更することができる。上記の実施の形態は、適宜組み合わせることができる。上述のそれぞれの図において、同一または相等する部分には同一の符号を付している。なお、上記の実施の形態は例示であり発明を限定するものではない。また、実施の形態においては、特許請求の範囲に示される実施の形態の変更が含まれている。