(58)【調査した分野】(Int.Cl.,DB名)
関節軸と、該関節軸を駆動するモータと、該モータの回転軸の物理的な位置を表す一回転内位置と多回転位置とを含む位置情報を出力するアブソリュートエンコーダと、を有するロボットを制御するロボット制御装置であって、
前記関節軸上の任意のキャリブレーション位置に前記関節軸が移動された場合において、前記アブソリュートエンコーダから位置情報を取得する第1位置情報取得部と、
前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記多回転位置のカウントを行う基準となる原点を含まない所定の許容範囲に含まれるか否かを判定する位置範囲判定部と、
前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記許容範囲に含まれない場合に、該一回転内位置が前記許容範囲に含まれるまで、前記キャリブレーション位置の移動を要求する移動要求部と、
前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記許容範囲に含まれる場合に、前記位置情報と前記関節軸の制御位置とに基づいて、前記関節軸の物理的な位置と制御位置とを補正する補正値を決定する補正値決定部と、
を備えるロボット制御装置。
関節軸と、該関節軸を駆動するモータと、該モータの回転軸の物理的な位置を表す一回転内位置と多回転位置とを含む位置情報を出力するアブソリュートエンコーダと、を有するロボットをロボット制御装置がキャリブレーションするキャリブレーション方法であって、
前記関節軸上の任意のキャリブレーション位置に前記関節軸が移動された場合において、前記アブソリュートエンコーダから位置情報を取得する第1位置情報取得工程と、
前記第1位置情報工程により取得した前記位置情報に含まれる一回転内位置が、前記多回転位置のカウントを行う基準となる原点を含まない所定の許容範囲に含まれるか否かを判定する位置範囲判定工程と、
前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記許容範囲に含まれない場合に、該一回転内位置が前記許容範囲に含まれるまで、前記キャリブレーション位置の移動を要求する移動要求工程と、
前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記許容範囲に含まれる場合に、前記位置情報と前記関節軸の制御位置とに基づいて、前記関節軸の物理的な位置と制御位置とを補正する補正値を決定する補正値決定工程と、
を含むキャリブレーション方法。
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述の問題を考慮し、本発明が解決しようとする課題は、ロボットの関節軸をその動作限界位置でキャリブレーションできない場合においても、任意の位置で精度良くキャリブレーションすることが可能な技術を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【0007】
[適用例1]関節軸と、該関節軸を駆動するモータと、該モータの回転軸の物理的な位置を表す一回転内位置と多回転位置とを含む位置情報を出力するアブソリュートエンコーダと、を有するロボットを制御するロボット制御装置であって、前記関節軸上の任意のキャリブレーション位置に前記関節軸が移動された場合において、前記アブソリュートエンコーダから位置情報を取得する第1位置情報取得部と、前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記多回転位置のカウントを行う基準となる原点を含まない所定の許容範囲に含まれるか否かを判定する位置範囲判定部と、前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記許容範囲に含まれない場合に、該一回転内位置が前記許容範囲に含まれるまで、前記キャリブレーション位置の移動を要求する移動要求部と、前記第1位置情報取得部が取得した前記位置情報に含まれる一回転内位置が、前記許容範囲に含まれる場合に、前記位置情報と前記関節軸の制御位置とに基づいて、前記関節軸の物理的な位置と制御位置とを補正する補正値を決定する補正値決定部と、を備えるロボット制御装置。
【0008】
このような構成のロボット制御装置によれば、関節軸の物理的な位置と制御位置とを補正するための補正値を求める際に、アブソリュートエンコーダから出力される一回転内位置が、多回転位置のカウントを行う基準となる原点を含まない所定の許容範囲に含まれるか否かを判定し、一回転内位置が、許容範囲内に含まれない場合には、許容範囲に含まれるまで、キャリブレーション位置の移動を要求する。そのため、補正値を決定するための関節軸の位置(以下、「キャリブレーション位置」ともいう)が、アブソリュートエンコーダの原点に近い位置に設定されることが抑制される。この結果、2回目以降のキャリブレーション時の関節軸の位置合わせの際に、アブソリュートエンコーダから出力される多回転位置が不安定になってしまうことが抑制されるので、任意の位置で精度の高いキャリブレーションを行うことが可能になる。また、一旦設定されたキャリブレーション位置への位置合わせにおいて、ロボット各部のヒステリシスや、キャリブレーション位置への位置合わせの際の力加減、位置合わせ時の目分量によるズレが関節軸上に生じたとしても、多くの場合、その影響は、モータの回転軸の一回転内位置の範囲内のズレに収まる。そのため、上記構成のようにキャリブレーション位置を許容範囲内に設定すれば、2回目以降のキャリブレーション時のキャリブレーション位置への位置合わせにおいて前述の種々の要因による位置ズレが生じても、そのズレは一回転内位置の範囲に留まるとともに、多回転位置までがずれてしまうことが抑制される。よって、精度の高いキャリブレーションを実現することが可能になる。
【0009】
[適用例2]適用例1に記載のロボット制御装置であって、前記許容範囲は、前記一回転内位置の全範囲から、前記原点を起点として360°(2πrad)を前記モータの回転軸のギア数で除した値だけ遅れた位置から該値まで進んだ位置までを除いた範囲である、ロボット制御装置。
【0010】
キャリブレーション位置への関節軸の位置合わせは、モータの回転軸に設けられたギアの分解能に拘束される。そのため、上記構成のように、原点から1つのギア分だけ位置を前後させた範囲を除く範囲を許容範囲とすれば、キャリブレーション位置を設定可能な範囲を大きくすることができ、キャリブレーション位置の設定の自由度を高めることができる。
【0011】
[適用例3]適用例1または適用例2に記載のロボット制御装置であって、更に、前記補正値が決定された際における前記位置情報のうちの少なくとも前記一回転内位置と前記関節軸の制御位置とを記憶する制御装置側記憶部と、前記補正値が決定された後に、前記関節軸が、再度、前記キャリブレーション位置に移動された場合において、前記アブソリュートエンコーダから位置情報を取得する第2位置情報取得部と、前記第2位置情報取得部が取得した前記位置情報内の一回転内位置を、前記制御装置側記憶部に記憶されている一回転内位置に変更し、該変更後の位置情報と前記制御装置側記憶部に記憶されている前記関節軸の制御位置とに基づいて、前記補正値を更新する補正値更新部と、を備えるロボット制御装置。
【0012】
このような構成のロボット制御装置であれば、制御装置側記憶部に予め記憶しておいた一回転内位置を用いて2回目以降のキャリブレーション(補正値の更新)を行うことができる。そのため、2回目以降のキャリブレーションにおいて、ロボット各部のヒステリシスや、キャリブレーション位置への位置合わせの際の力加減、位置合わせ時の目分量によるズレなどの影響があったとしても、最初のキャリブレーション時において記憶しておいた一回転内位置を用いることで精度良く再キャリブレーションを行うことができる。予め記憶しておいた一回転内位置をそのまま用いることできるのは、上述のように、種々の要因によってキャリブレーション位置への位置合わせにズレが生じたとしても、そのズレは、一回転内位置の範囲内に収まるためである。
【0013】
[適用例4]
適用例3に記載のロボット制御装置であって、前記アブソリュートエンコーダは、前記位置情報のうちの多回転位置を保持する揮発性のエンコーダ側記憶部と、前記エンコーダ側記憶部をバッテリバックアップするバッテリと、を備え、前記第2位置情報取得部は、前記補正値決定部によって前記補正値が決定された後で、かつ、前記バッテリが交換されて前記エンコーダ側記憶部から前記多回転位置が失われた後に、前記位置情報の取得を行う、ロボット制御装置。
【0014】
本構成においても、上記のように、キャリブレーション位置がアブソリュートエンコーダの原点付近に設定されることが抑制されているため、アブソリュートエンコーダからは正確に多回転位置が出力される。そのため、アブソリュートエンコーダのバッテリの電圧低下によって多回転位置が失われ、再度のキャリブレーションが必要になった場合でも、正確にキャリブレーションを行うことができる。この結果、バッテリ交換に伴って、再度ティーチングなどを行う必要がないため、ロボットを迅速に復帰させることが可能になる。
【0015】
本発明は、上述したロボット制御装置としての構成のほか、ロボットのキャリブレーション方法や、ロボットのキャリブレーションを行うためのコンピュータプログラムとしても構成することができる。コンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。また、上述した各適用例の構成要素は、適宜、組み合わせたり、省略したりすることが可能である。
【発明を実施するための形態】
【0017】
A.システム構成:
図1は、本発明の一実施例としてのロボット制御装置200を含むロボットシステム10の概略構成を示す説明図である。ロボットシステム10は、多関節型の産業用ロボットとして構成されたロボット本体100と、ロボット本体100の動作を制御するロボット制御装置200と、ロボット制御装置200に接続され、ロボット本体100の動作を教示するためのロボット教示装置300とを有している。ロボット本体100とロボット制御装置200、および、ロボット制御装置200とロボット教示装置300は、所定の接続ケーブルを介してそれぞれ接続されている。
【0018】
ロボット本体100は、例えば、工場内の設備に固定されるベース部101と、水平方向に旋回可能な関節軸によってベース部101に支持されたショルダ部102と、鉛直方向に旋回可能な関節軸によってショルダ部102に下端が支持された下アーム103と、鉛直方向に旋回可能な関節軸によって下アーム103の先端に略中央部が支持された上アーム104と、鉛直方向に旋回可能な関節軸によって上アーム104の先端に支持された手首105とを備えている。手首105の先端には、手首105の円周方向に回転可能な軸を有するフランジ部106が備えられている。フランジ部106には、ワークを把持するエンドエフェクタ107が取り付けられている。
【0019】
ロボット制御装置200は、CPUやメモリを備えるコンピュータとして構成されている。ロボット制御装置200は、ロボット教示装置300によって教示された教示データに基づいて、ロボット本体100の各関節軸に備えられたサーボモータを駆動し、ロボット本体100の自動制御を行う。また、ロボット制御装置200は、ロボット教示装置300から手動による操作指令があった場合には、その指令に応じてロボット本体100の各関節軸を駆動する。
【0020】
図2は、ロボット本体100およびロボット制御装置200の内部構成を示すブロック図である。説明の簡単のため、
図2には、
図1に示した複数の関節軸のうち、1つの関節軸について示している。ロボット本体100は、三相交流式のブラシレスDCモータとして構成されたサーボモータ110と、サーボモータ110の回転軸に接続されたアブソリュートエンコーダ160と、サーボモータ110の回転を減速させる減速機170と、減速機170を介してサーボモータ110によって駆動される関節軸180と、を備えている。
【0021】
アブソリュートエンコーダ160は、サーボモータ110の回転軸の物理的な絶対位置を検出する検出器である。絶対位置は、一回転内位置情報と多回転位置情報とを含むエンコーダ位置情報によって表される。一回転内位置情報とは、アブソリュートエンコーダ160の原点から1回転内におけるサーボモータ110の回転軸の絶対位置(絶対角度)を示す情報であり、例えば、16ビットの値で表される。また、多回転位置情報とは、その原点を基準としてカウントしたサーボモータ110の回転軸の累積回転数(累積角度)を示す情報であり、例えば、16ビットの値で表される。
【0022】
アブソリュートエンコーダ160は、前述したエンコーダ位置情報のうち、多回転位置情報を記憶するための多回転位置情報記憶部162を備えている。この多回転位置情報記憶部は揮発性のメモリであり、バッテリ164によってバックアップされている。そのため、バッテリ164の電圧が低下すると、多回転位置情報記憶部162に記憶された多回転位置情報は失われることになる。なお、一回転内位置情報は、バッテリ164の電圧が低下してもその情報が失われることはない。これは、アブソリュートエンコーダ160内に備えられた回転板によって一回転内の絶対位置はいつでも取得可能だからである。
【0023】
ロボット制御装置200は、ロボット本体100のサーボモータ110に三相交流電力を供給するインバータ210と、インバータ210のスイッチング制御を行う駆動回路220と、ロボット教示装置300が接続されるインタフェース230と、CPU240と、記憶部250とを備えている。CPU240は、記憶部250に記憶された所定の制御プログラム251を実行することで、駆動制御部260、第1キャリブレーション処理部270、第2キャリブレーション処理部280、として機能する。
【0024】
第1キャリブレーション処理部270は、例えば、ロボット本体100が工場内の設備等に設置されたタイミングで最初にキャリブレーションを行うための機能を有する。キャリブレーションとは、関節軸180の制御上の軸位置とアブソリュートエンコーダ160から出力される物理的位置とを一致させるための補正値を求めることをいう。以下では、この第1キャリブレーション処理部270によって実行されるキャリブレーションのことを、「初期キャリブレーション処理」という。
図2に示すように、第1キャリブレーション処理部270は、第1位置情報取得部271と、位置範囲判定部272と、補正値決定部273と、位置記録部274と、移動要求部275と、を含んでいる。
【0025】
第1位置情報取得部271は、初期キャリブレーション処理を行う際に、アブソリュートエンコーダ160からエンコーダ位置情報を取得する機能を有する。位置範囲判定部272は、第1位置情報取得部271によって取得されたエンコーダ位置情報のうちの一回転内位置情報が表す位置が、予め定められた許容範囲に含まれるか否かを判定する機能を有する。この許容範囲についての詳細は後述する。補正値決定部273は、第1位置情報取得部271によって取得されたエンコーダ位置情報等に基づいて上述した補正値を算出し、記憶部250に不揮発的に記憶させる。補正値の具体的な算出方法については後述する。位置記録部274は、補正値が決定された際の関節軸の制御上の軸位置を表す情報(以下、関節軸位置情報という)と第1位置情報取得部271によって取得されたエンコーダ位置情報と、を記憶部250に不揮発的に記憶させる。移動要求部275は、第1位置情報取得部271によって取得されたエンコーダ位置情報のうちの一回転内位置情報が表す位置が、前述の許容範囲に含まれない場合に、キャリブレーション位置の変更をユーザに要求する機能を有する。
【0026】
第2キャリブレーション処理部280は、初期キャリブレーション処理後の任意のタイミングで、再度、キャリブレーションを行うための機能を有する。以下では、第2キャリブレーション処理部280によって行われるキャリブレーションのことを、「再キャリブレーション処理」という。再キャリブレーション処理は、例えば、アブソリュートエンコーダ160が備えるバッテリ164の電圧が低下して多回転位置情報が失われた際に、バッテリ164が新たなバッテリに交換された後にユーザの指示に応じて実行される。第2キャリブレーション処理部280は、第2位置情報取得部281と、補正値更新部282と、含んでいる。
【0027】
第2位置情報取得部281は、アブソリュートエンコーダ160からエンコーダ位置情報を取得する機能を有する。補正値更新部282は、記憶部250に記憶されているエンコーダ位置情報と、関節軸位置情報と、第2位置情報取得部281によって取得されたエンコーダ位置情報と、に基づいて、補正値を再決定して記憶部250に記録する機能を有する。
【0028】
駆動制御部260は、記憶部250に予め記憶された教示データ252に基づいて、サーボモータ110を駆動するための信号を駆動回路220に出力する。このとき、駆動制御部260は、ロボット本体100のアブソリュートエンコーダ160からエンコーダ位置情報を取得し、このエンコーダ位置情報と記憶部250に記憶されている補正値とに基づいて、サーボモータ110の駆動をフィードバック制御する。
【0029】
駆動制御部260は、関節軸の位置を以下の式(1)によって算出してフィードバック制御を行う。具体的には、アブソリュートエンコーダ160から出力された絶対位置に、第1キャリブレーション処理部270や第2キャリブレーション処理部280で決定された補正値を加算し、その合計値を減速機170のギア比で除した値が関節軸180の制御上の位置となる。なお、減速機170のギア比は、関節軸180の種類に応じて50〜120程度の値をとり、例えば、80とすることができる。
【0030】
関節軸位置=(エンコーダ出力位置+補正値)/ギア比 ・・・(1)
【0031】
第1キャリブレーション処理部270は、上記式(1)中の補正値を、下記式(2)に基づいて算出する。具体的には、キャリブレーションを行う際の関節軸の制御位置にギア比を積算し、その積算値からアブソリュートエンコーダ160が出力した絶対位置(一回転内位置+多回転位置)を差し引くことで求めることができる。なお、第2キャリブレーション処理部280による補正値の再決定方法については後述する。
【0032】
補正値=関節軸位置*ギア比−エンコーダ出力位置 ・・・(2)
【0033】
B.初期キャリブレーション処理:
図3は、第1キャリブレーション処理部270によって実行される初期キャリブレーション処理のフローチャートである。この初期キャリブレーション処理は、例えば、ロボット本体100が工場内の設備等に組み付けられた際に、ユーザからロボット教示装置300を通じて初期キャリブレーションの実行を指令された場合に実行される。
【0034】
初期キャリブレーション処理が実行されると、まず、ユーザによって、ロボット本体100の関節軸180が任意の位置に移動され、キャリブレーション位置が指定される(ステップS100)。ユーザは、ロボット教示装置300を用いて関節軸180を移動させることができ、また、ロボット本体100のアームを掴んで関節軸180を移動させることもできる。
【0035】
キャリブレーション位置が指定されると、第1キャリブレーション処理部270は、第1位置情報取得部271により、アブソリュートエンコーダ160からエンコーダ位置情報を取得する(ステップS105)。第1位置情報取得部271は、更に、そのエンコーダ位置情報の中から、一回転内位置情報を取得する(ステップS110)。
【0036】
一回転内位置情報が取得されると、位置範囲判定部272により、その一回転内位置情報によって表される一回転内位置が、アブソリュートエンコーダ160の原点を含まない所定の許容範囲内にあるか否かが判定される(ステップS115)。
【0037】
図4は、本実施例における一回転内位置の許容範囲を示す説明図である。本実施例では、
図4に示すように、位置範囲判定部272は、原点から±45°の範囲を除いた範囲、すなわち、原点に対して+45°から+315°までの範囲を許容範囲とし、一回転内位置が、この許容範囲内にあるか否かを判定する。この判定の結果、一回転内位置が許容範囲内になければ、移動要求部275が、ロボット教示装置300を通じてユーザに関節軸180の微小な移動を要求し(ステップS120)、処理をステップS100に戻す。関節軸180の移動が行われると、移動後の一回転内位置が、前述の許容範囲内となるまで、上記ステップS100〜S115の処理が繰り返される。なお、上記ステップS120では、ロボット制御装置200は、例えば、ユーザによる関節軸180の移動が許容範囲に収まるようになるまで、ロボット教示装置300を通じて、ユーザに、警告表示を行わせることとしてもよい。
【0038】
上記ステップS115において、一回転内位置が許容範囲内であると判定されると、上記式(2)に従い、補正値決定部273により補正値が算出される(ステップS125)。補正値決定部273により補正値が算出されると、算出された補正値は、記憶部250に保存される(ステップS130)。補正値が記憶部250に保存されると、位置記録部274により、上記ステップS105で最後に取得したエンコーダ位置情報と、そのエンコーダ位置情報が取得された時点における関節軸の制御位置を表す関節軸位置情報と、が記憶部250に保存される(ステップS135,S140)。なお、本実施例では、ステップS135において、記憶部250に、エンコーダ位置情報全体を保存することとするが、エンコーダ位置情報のうち、一回転内位置情報だけを保存することとしてもよい。
【0039】
以上で説明した一連の処理により、初期キャリブレーション処理は終了する。初期キャリブレーション処理の終了後、ユーザは、関節軸180上の、上記ステップS100で指定したキャリブレーション位置、あるいは、上記ステップS120で移動させたキャリブレーション位置に、マーキングを施すことが好ましい。こうすることで、後述する再キャリブレーション処理において、容易にキャリブレーション位置への関節軸180の位置合わせを行うことができる。
【0040】
C.再キャリブレーション処理:
図5は、第2キャリブレーション処理部280によって実行される再キャリブレーション処理のフローチャートである。この再キャリブレーション処理は、アブソリュートエンコーダ160が備えるバッテリ164の交換が行われ、ユーザからロボット教示装置300を通じて再キャリブレーション処理の実行を指令された場合に実行される。
【0041】
再キャリブレーション処理が実行されると、まず、ユーザによって、ロボット本体100の関節軸180が、初期キャリブレーション処理において指定されたキャリブレーション位置に移動される(ステップS200)。初期キャリブレーション処理の際と同様に、ユーザは、ロボット教示装置300を用いて関節軸180を移動させることができ、また、ロボット本体100のアームを掴んで関節軸180を移動させることもできる。
【0042】
キャリブレーション位置に関節軸180が移動されると、第2位置情報取得部281によって、アブソリュートエンコーダ160からエンコーダ位置情報が取得される(ステップS205)。エンコーダ位置情報の取得後、第2キャリブレーション処理部280は、初期キャリブレーション処理において保存されたエンコーダ位置情報を記憶部250から読み出す(ステップS210)。そして、アブソリュートエンコーダ160から取得したエンコーダ位置情報のうちの一回転内位置情報を、記憶部250から読み出したエンコーダ位置情報内の一回転内位置情報に置き換える(ステップS215)。
【0043】
一回転内位置情報の置き換え後、補正値更新部282は、初期キャリブレーション処理において記憶部250に保存された関節軸位置情報を読み出し(ステップS220)、この関節軸位置情報と、ステップS215において一回転内位置情報が置き換えられたエンコーダ位置情報とを用いて、上記式(2)に基づき補正値を算出する(ステップS225)。そして、算出された補正値によって、記憶部250にすでに記憶されている補正値を更新する(ステップS230)。なお、初期キャリブレーション処理によって記憶部250に保存されたエンコーダ位置情報と関節軸位置情報とは、更新せずにそのまま保存しておく。
【0044】
以上で説明した本実施例のロボット制御装置200によれば、上述した初期キャリブレーション処理において、アブソリュートエンコーダ160の原点位置からある程度離れた一回転内位置において関節軸180のキャリブレーション位置が設定される。そのため、再キャリブレーション時において、関節軸180をキャリブレーション位置に位置合わせする際に、多回転位置が不安定になること(より詳しくは、多回転位置が±1回転の範囲で変動してしまうこと)を抑制することができる。そのため、ロボット本体100が設備内に固定されてしまい関節軸180をメカ端のように位置合わせの容易な位置でキャリブレーションできないような状況においても、任意の位置に再現性の高いキャリブレーション位置を設定することが可能になる。
【0045】
また、本実施例では、上記のようにキャリブレーション位置の設定がなされる結果、再キャリブレーション時においてアブソリュートエンコーダ160から正確に多回転位置情報が出力されることになる。そのため、アブソリュートエンコーダ160のバッテリ164の電圧低下によって多回転位置情報が失われ、再キャリブレーションが必要になった場合でも、正確にキャリブレーションを行うことができる。この結果、バッテリ交換に伴って、再度ティーチングを行う必要がないため、ロボットを迅速に復帰させることが可能になる。
【0046】
更に、上述した再キャリブレーション処理によれば、初期キャリブレーション処理において保存しておいたエンコーダ位置情報内の一回転内位置を用いて補正値を算出する。そのため、再キャリブレーション処理時の位置合わせの際に、減速機170のヒステリシスや、位置合わせの際の力加減、あるいは、目分量による位置ズレなどの要因が存在しても、それらの影響を受けることなく、初期キャリブレーション時と同等の精度で正確にキャリブレーションを行うことができる。
【0047】
ここで、初期キャリブレーション処理によって記憶部250に保存しておいたエンコーダ位置情報内の一回転内位置を用いて再キャリブレーション時に補正値を算出可能な理由について説明する。まず、ロボット本体100のある関節軸180をメカ端に押しつけ、その押しつけ力を変化させた場合に関節軸180の位置ズレを測定した。すると、そのズレ量は、最大で約0.26°であった、このズレは、例えば、アームの長さが854.88mmの場合には、アームの先端で、3.879mm(=854.88mm×sin0.26°)のズレとなって表れる。しかし、この0.26°という角度は、減速機170のギア比を80とすると、サーボモータ110の回転軸レベルでは、20.8°(=0.26°×80)という角度に過ぎない。また、ギア比を150として計算しても、39.0°程度である。つまり、上述したズレの要因による影響は、多く見積もっても、サーボモータ110の回転軸の1回転内のズレに収まると言える。そのため、本実施例の再キャリブレーション処理では、アブソリュートエンコーダ160から取得した多回転位置情報はそのままに、一回転内位置情報だけを記憶部250に保存しておいた値に入れ替えることで、初期キャリブレーション処理実行時と同様の精度の高いキャリブレーションが実行可能になる。また、再キャリブレーション処理の際には、多回転位置情報は、再キャリブレーションの際に得られた値をそのまま使用するが、本実施例では前述のように、キャリブレーション位置がアブソリュートエンコーダ160の原点付近に設定されることがないため、多回転位置の検出精度が高くなる。よって、本実施例によれば、精度の高い一回転内位置および多回転位置によって、きわめて高精度にキャリブレーションを行うことが可能になる。
【0048】
D.変形例:
以上、本発明の一実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができる。例えば、以下のような変形が可能である。
【0049】
・変形例1:
上記実施例では、サーボモータ110の回転軸の一回転内位置が、原点から+45°〜+315°の範囲(許容範囲)に入るようキャリブレーション位置の設定を行ったが、この範囲は、多回転数の変動を抑制可能な値であればよく任意に設定可能である。例えば、+30°〜+330°、+60°〜+300°、+90°〜+270°などの範囲を許容範囲とすることができる。また、許容範囲は、原点から+方向と−方向とで非対称となる範囲とすることもできる。
【0050】
その他、例えば、前述の許容範囲は、下記式(3),(4)に示すように、一回転内位置の全範囲から、原点を起点として360°をサーボモータ110の回転軸のギア数で除した値Aだけ遅れた位置からこの値Aまで進んだ位置までを除いた範囲(換言すれば、一回転内位置の全範囲において、値Aに対応する位置から、360°から値Aを差し引いた値に対応する位置までの範囲)とすることができる。
【0051】
値A=360°/ギア数 ・・・(3)
値A≦許容範囲≦360°−値A ・・・(4)
【0052】
キャリブレーション位置への関節軸の位置合わせは、モータの回転軸に設けられたギアの分解能に拘束される。そのため、上記のように、原点から1つのギア分だけ位置を前後させた範囲を除く範囲を許容範囲とすれば、より広い範囲にキャリブレーション位置を設定することが可能になる。なお、モータの回転軸のギア数は、例えば、50〜60程度であり、多くても100程度である。
【0053】
・変形例2:
上記実施例では、1つの関節軸180について初期キャリブレーションと再キャリブレーションとを行う例について説明したが、ロボット本体100が備える全ての関節軸に対して、上述した初期キャリブレーションと再キャリブレーションとを適用することができる。
【0054】
・変形例3:
上記実施例では、再キャリブレーション処理は、バッテリ164の交換後に行うこととしたが、バッテリ164の交換の有無にかかわらず、初期キャリブレーション処理が終了した後であれば、どのタイミングで実行してもよい。また、初期キャリブレーション処理および再キャリブレーション処理が実行される回数はそれぞれ特に制限されない。
【0055】
・変形例4:
上記実施例では、初期キャリブレーション処理と再キャリブレーション処理とは、ロボット制御装置200が実行することとしたが、ロボット教示装置300が実行することとしてもよい。この場合、ロボット教示装置300が、本願のロボット制御装置に相当する。また、処理内容が、ロボット制御装置200とロボット教示装置300とに分散する場合には、両者をまとめて、本願のロボット制御装置として捉えることも可能である。
【0056】
・変形例5:
上記実施例では、任意の位置で初期キャリブレーションを行うこととしたが、メカ端や所定のマーキング位置など、位置合わせの再現性の高い位置で初期キャリブレーションを行うこととしてもよい。
【0057】
・変形例6:
上述したロボット制御装置200の構成において、ソフトウェアによって実現した機能はハードウェアによって実現してもよく、その逆もまた可能である