説明

ロボットの関節の原点補正方法およびそのシステム

【課題】高精度且つ安価にロボットの関節を原点補正する。
【解決手段】第1の姿勢P(l)のロボット12のマーカー22が撮影画像に写る位置にカメラ16を設置する。各関節用のエンコーダの出力値に基づいて、原点補正対象の関節12lに予め対応付けされた関節のみを動かすことにより、カメラ16の撮影画像上において第1の姿勢時のマーカー22の位置の近傍にマーカー22が写るような第2の姿勢P(l)に変更する。ロボット12の姿勢変更によるカメラ16の撮影画像上におけるマーカー22の変位に基づいて、原点補正対象の関節12lの原点補正を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの関節の原点を補正する方法およびそのシステムに関する。
【背景技術】
【0002】
従来より、複数のリンクと、リンク間に設けられた関節と、一方のリンクに対して他方のリンクを関節軸中心に回転させる駆動源(モータ)と、一方のリンクと他方のリンクとの間の関節角度を検出する関節角度検出手段(エンコーダ)とを有する多関節型のロボットが知られている。
【0003】
このようなロボットを所望の位置姿勢に制御するとき、エンコーダの出力値に基づいて、具体的にはエンコーダの出力値が所望の位置姿勢(所望の関節角度)に対応する値になるように、モータが制御される。そのため、エンコーダの出力値と関節角度とが所定の対応関係に維持されている必要がある。例えば、ゼロの関節角度に所定に対応付けされたエンコーダの出力値が所定の一定値に維持されている必要がある。
【0004】
ところが、現実には、エンコーダの出力値と関節角度との対応関係は、ロボットの調整誤差や、修理のためにロボットの構成部品(特にモータやエンコーダ)が交換されるなど、ロボットの状態が変わることによって変化することがある。例えば、ゼロの関節角度に所定に対応付けされたエンコーダの出力値が、ロボットの状態が変わることによって異なる値になることがある。
【0005】
当然ながら、エンコーダの出力値と関節角度との対応関係が変わると、エンコーダの出力値に基づいて制御されるロボットは、要求された位置姿勢と異なる位置姿勢になる。すなわちロボットの位置姿勢に関する精度が悪化する。
【0006】
したがって、ロボットの位置姿勢に関する精度を高く維持するためには、精度調整の一環として、ロボットの状態が変わる度に、または定期的に、エンコーダの出力値と関節角度との対応関係を新たに調べる必要がある。そして、ロボットの状態が変わった後は、調べたエンコーダの出力値と関節角度との対応関係に基づいてロボットを制御する必要がある。このような精度調整は、関節角度がゼロになるときのエンコーダの出力値を新たに調べることから、零点調整や原点補正と呼ばれる。
【0007】
一例として、特許文献1には、カメラを用いるロボットの関節の原点補正方法が開示されている。特許文献1の方法では、ロボットの先端にマーカーを取付け、マーカーが撮影画像に写る位置にカメラを設置する。そして、ロボットの複数の姿勢と、各姿勢時のカメラの撮影画像上のマーカーの位置とに基づいて、関節の原点補正を実行する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−110705号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に記載する原点補正方法の場合、マーカーを大きく移動させてカメラの撮影画像上に定義された複数の基準点それぞれにマーカーを位置合わせするため、カメラをロボットから大きく離す必要がある。そのため、カメラによるマーカー位置の検出精度が低い(マーカーから大きく離れたカメラは、マーカーの微小な変位を捉えることが困難である)。したがって、高精度に、ロボットの関節の原点補正を行うことが困難である。
【0010】
また、特許文献1に記載する原点補正方法は、撮影画像上において基準点にマーカーを正確に位置合わせするため、高価な高精度カメラが必要であり、また、カメラのキャリブレーションが必要である。
【0011】
そこで、本発明は、高精度に且つ安価に、ロボットの関節の原点補正を実行することを課題とする。
【課題を解決するための手段】
【0012】
上述の課題を解決するために、本発明の第1の態様によれば、
多関節型のロボットの関節角度を検出するエンコーダの出力値と該関節角度の実値との対応関係を補正するロボットの関節の原点補正方法であって、
第1の姿勢のロボットのマーカーが撮影画像に写る位置にカメラを設置し、
各関節用のエンコーダの出力値に基づいて、原点補正対象の関節に予め対応付けされた関節のみを動かすことにより、カメラの撮影画像上において第1の姿勢時のマーカーの位置の近傍にマーカーが写るような第2の姿勢に第1の姿勢から変更し、
第1の姿勢から第2の姿勢への変更によるカメラの撮影画像上におけるマーカーの変位に基づいて、原点補正対象の関節の原点補正を行う、ロボットの関節の原点補正方法が提供される。
【0013】
本発明の第2の態様によれば、
原点補正対象は曲げ関節であって、
曲げ関節を挟んで第1および第2のねじり関節があって、
曲げ関節の関節角度が基準値のときは第1および第2のねじり関節の関節軸それぞれが同一直線上に位置し、
曲げ関節用のエンコーダが基準値と所定の対応関係の出力値を出力するように曲げ関節の関節角度を変更することによってロボットを第1の姿勢とし、
各関節用のエンコーダの出力値に基づいて、
(1)曲げ関節の関節角度が第1の姿勢時と同一であり、
(2)第1および第2のねじり関節の関節角度それぞれが第1の姿勢時から180度変更され、且つ、
(3)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更する、第1の態様に記載のロボットの関節の原点補正方法が提供される。
【0014】
本発明の第3の態様によれば、
原点補正対象はねじり関節であって、
ねじり関節を挟んで第1および第2の曲げ関節があって、
ねじり関節の関節角度が基準値のときは第1および第2の曲げ関節の関節軸が互いに平行に位置し、
ねじり関節用のエンコーダが基準値と所定の対応関係の出力値を出力するようにねじり関節の関節角度を変更すること、且つ、ロボットの先端側の第1の曲げ関節の関節角度を、一方の方向に所定の角度変更することによってロボットを第1の姿勢とし、
各関節用のエンコーダの出力値に基づいて、
(1)ねじり関節の関節角度が第1の姿勢時と同一であり、
(2)第1の曲げ関節の関節角度が第1の姿勢時から他方の方向に変更され、
(3)第2の曲げ関節の関節角度が第1の姿勢時から変更され、且つ
(4)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更する、第1の態様に記載のロボットの関節の原点補正方法が提供される。
【0015】
本発明の第4の態様によれば、
原点補正対象は第1のねじり関節であって、
第1のねじり関節の反先端側に別の第2のねじり関節があって、
第2のねじり関節の反先端側に曲げ関節があって、
マーカーが第1のねじり関節の関節軸上以外に位置し、
第1のねじり関節の関節角度が基準値のときはマーカーが曲げ関節の関節軸と直交し、且つ第2のねじり関節の関節軸を含む平面上に位置し、
第1のねじり関節用のエンコーダが基準値と所定の対応関係の出力値を出力するように第1のねじり関節の関節角度を変更することによってロボットを第1の姿勢とし、
各関節用のエンコーダの出力値に基づいて、
(1)第1および第2のねじり関節の関節角度の変更量の合計が180度になるように該第1および第2のねじり関節の関節角度が第1の姿勢時から変更され、
(2)曲げ関節の関節角度が第1の姿勢時から変更され、且つ、
(3)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更する、第1の態様に記載のロボットの関節の原点補正方法が提供される。
【0016】
本発明の第5の態様によれば、
原点補正対象は関節軸が互いに平行な第1および第2の曲げ関節であって、
反先端側の第2の曲げ関節のさらに反先端側に第1のねじり関節があって、
第1の曲げ関節の先端側に第3の曲げ関節があって、
第3の曲げ関節の先端側に第2のねじり関節があって、
(a)各関節用のエンコーダの出力値に基づいて第1および第2のねじり関節の関節軸が同一直線上に位置するようにロボットを第1の姿勢にし、
各関節用のエンコーダの出力値に基づいて、
(1)第1および第2のねじり関節の関節角度それぞれが第1の姿勢時から180度変更され、且つ、
(2)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更し、
(b)各関節用のエンコーダの出力値に基づいて第1および第2のねじり関節の関節軸が同一直線上に位置するようにロボットを第3の姿勢にし、
各関節用のエンコーダの出力値に基づいて、
(1)第1および第2のねじり関節の関節軸が同一直線上に位置するように維持し、
(2)第1、第2、および第3の曲げ関節の関節角度それぞれが第3の姿勢時から変更され、且つ、
(3)残りの関節の関節角度が第3の姿勢時と同一である、第4の姿勢に第3の姿勢から変更し、
第1の姿勢から第2の姿勢への変更によるカメラの撮影画像上におけるマーカーの第1の変位と、第3の姿勢から第4の姿勢への変更によるカメラの撮影画像上におけるマーカーの第2の変位とに基づいて、原点補正対象の関節の原点補正を行う、第1の態様に記載のロボットの関節の原点補正方法が提供される。
【0017】
本発明の第6の態様によれば、
多関節型のロボットの関節角度を検出するエンコーダの出力値と該関節角度の実値との対応関係を補正するロボットの関節の原点補正システムであって、
第1の姿勢のロボットのマーカーを撮影するカメラと、
各関節用のエンコーダの出力値に基づいて、原点補正対象の関節に予め対応付けされた関節のみを動かすことにより、カメラの撮影画像上において第1の姿勢時のマーカーの位置の近傍にマーカーが写るような第2の姿勢に第1の姿勢のロボットを制御するロボット制御手段と、
第1の姿勢から第2の姿勢への変更によるカメラの撮影画像上におけるマーカーの変位量および変位方向を算出するマーカー変位算出手段と、
マーカー変位算出手段が算出したマーカーの変位量および変位方向に基づいて、原点補正対象の関節の原点補正を行う原点補正手段とを有する、ロボットの関節の原点補正システムが提供される。
【発明の効果】
【0018】
本発明によれば、第1の姿勢から第2の姿勢(カメラの撮影画像上において第1の姿勢時のマーカーの位置の近傍にマーカーが写るような姿勢)への姿勢変更による、カメラの撮影画像上におけるマーカーの変位に基づいて、原点補正対象の関節の原点補正が行われる。マーカーの変位量が小さいので該マーカーの近くにカメラを設置することできるため、分解能の低い安価なカメラであっても、高精度に関節の原点補正を実行することができる。
【0019】
また、第1の姿勢から第2の姿勢への変更によるカメラの撮影画像上におけるマーカーの変位と、原点補正対象の関節用のエンコーダの出力値に所定に対応付けされた関節角度と該関節の実際の関節角度の間のずれ量との相関性を利用するため、また、原点補正対象の関節のみに原点補正を実行するため、原点補正対象以外の関節の関節角度やロボットの機械パラメータ(リンクの長さなど)を用いて複雑な計算を行う必要がない。したがって、複雑な計算を行う必要がなく、処理能力が低い安価なコンピュータ18であっても、容易に計算することができる。
【0020】
その結果、高精度に且つ安価に、ロボットの関節の原点補正を実行することができる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施の形態に係る、ロボットの関節の原点補正を実行するシステムを概略的に示す図である。
【図2】2つのねじり関節に挟まれた曲げ関節の原点補正を説明するための図である。
【図3】2つのねじり関節に挟まれた曲げ関節の原点補正を説明するための別の図である。
【図4】2つの曲げ関節に挟まれたねじり関節の原点補正を説明するための図である。
【図5】2つの曲げ関節に挟まれたねじり関節の原点補正を説明するための別の図である。
【図6】先端点と別のねじり関節とに挟まれたねじり関節であって、別のねじり関節の反先端点側に曲げ関節が存在するねじり関節の原点補正を説明するための図である。
【図7】先端点と別のねじり関節とに挟まれたねじり関節であって、別のねじり関節の反先端点側に曲げ関節が存在するねじり関節の原点補正を説明するための別の図である。
【図8】関節軸が互いに平行な2つの曲げ関節の原点補正を説明するための図である。
【図9】関節軸が互いに平行な2つの曲げ関節の原点補正を説明するための別の図である。
【図10】図2〜7に対応する原点補正の流れを示す図である。
【図11】図8〜9に対応する原点補正の流れを示す図である。
【図12】別の実施の形態の関節の原点補正を説明するための図である。
【発明を実施するための形態】
【0022】
図1は、本発明の実施の形態に係る、ロボットの関節の原点補正を実行する原点補正システムを概略的に示している。
【0023】
図1に示すように、原点補正システム10は、多関節型のロボット12と、ロボット12の姿勢を制御するコントローラ14と、ロボット12を撮影するカメラ16と、コントローラ14とカメラ16とに接続されたコンピュータ18とを有する。
【0024】
ロボット12は、複数のリンク12a〜12fと、リンク間に設けられた関節12g〜12lとを有する多関節型のロボットである。また、ロボット12は、その先端のフランジ12mにスプレーガンや溶接トーチなどの作業用ツールを取り付けることにより、塗装作業や溶接作業などの作業を実行する。ここでは、ロボット12の関節原点補正のための原点補正用ツール20がフランジ12mに取り付けられている。
【0025】
なお、関節12g、12j、12lは関節軸A1、A4、A6を備えるねじり関節であり、関節12h、12i、12kは関節軸A2、A3、A5を備える曲げ関節である。また、図1に示すロボット12では、ねじり関節12gの関節軸A1と曲げ関節12hの関節軸A2とが交差せず、また曲げ関節12iの関節軸A3とねじり関節12jの関節軸A4とが交差していないが、このようなロボット12に本発明は限定しない。すなわち、ねじり関節12gの関節軸A1と曲げ関節12hの関節軸A2とが交差し、また曲げ関節12iの関節軸A3とねじり関節12jの関節軸A4とが交差するロボットでも、本発明は実施可能である。
【0026】
ロボット12の先端点として、原点補正用ツール20は、先端にマーカー22を備える。マーカー22は、例えば発光ダイオードであって、後述するカメラ16によって撮影される。マーカー22はまた、フランジ12mに最も近いねじり関節12lの関節軸A6上を外れて位置するようにフランジ12mに固定されている。なお、本実施の形態においては、フランジ12mに対するマーカー22の位置は未知でもよい。すなわち本実施の形態は、マーカー22の空間上の位置を算出することなく、マーカー22を用いてロボット12の関節の原点を補正する。
【0027】
なお、本明細書において、「位置」や「姿勢」は、特段の記載がない限り、ロボット12のベース12nに予め定義されているベース座標系ΣBにおける位置や姿勢を言う。
【0028】
コントローラ14は、関節12g〜12lそれぞれのエンコーダの出力値に基づいて、関節12g〜12lそれぞれを駆動する複数のモータ(図示せず)を制御することにより、ロボット12の姿勢を制御するように構成されている。具体的には、コントローラ14は、任意の姿勢を実現する関節角度と所定の対応関係の出力値を、関節12g〜12lそれぞれのエンコーダが出力するように各関節のモータを制御する。
【0029】
コントローラ14はまた、詳細は後述するが、外部装置であるコンピュータ18から教示データ(関節12g〜12lそれぞれの関節角度のデータ)を受け取り、受け取った教示データに対応する姿勢にロボット12を制御するように構成されている。具体的には、コントローラ14は、教示データが示す関節角度と所定の対応関係の出力値をエンコーダが出力するように、関節12g〜12lを駆動するモータ(図示せず)を制御する。
【0030】
カメラ16は、例えばCCDカメラであって、ロボット12周辺の任意の位置に配置されて、原点補正用ツール20のマーカー22を撮影するためのものである。詳細は後述するが、カメラ16は、ロボット12の姿勢変更にともなうマーカー22の変位量および変位方向を検出するために使用される。また、カメラ16は、マーカー22の撮影画像をデータとしてコンピュータ18に出力するように構成されている。
【0031】
コンピュータ18は、カメラ16から受け取ったマーカー22の撮影画像データを画像処理することにより、撮影画像上におけるマーカー22の位置を算出するように構成されている。また、コンピュータ18は、具体的には後述するが、ロボット12が姿勢変更する前に撮影された撮影画像と姿勢変更後に撮影された撮影画像とから、ロボット12の姿勢変更にともなう撮影画像上のマーカー22の変位量および変位方向を算出するように構成されている。
【0032】
コンピュータ18はまた、ロボット12の教示データを作成し、作成した教示データをコントローラ14に送信するように構成されている。
【0033】
ここからは、具体的に、ロボット12の関節の原点補正方法について説明する。まず、その概念を説明する。
【0034】
本発明に係るロボット12の関節の原点補正方法では、関節12g〜12l全てを同時に原点補正するのではなく、個々にまたは多くても2つ同時に原点補正を行う。
【0035】
原点補正とは、エンコーダの出力値に所定に対応付けされた関節角度と実際の関節角度とのずれ量(すなわち、エンコーダの検出誤差量)をゼロにすることである。ずれ量をゼロにするために、本発明に係るロボット12の関節の原点補正方法では、原点補正対象の関節それぞれに、予め第1および第2の姿勢を設定し、第1の姿勢から第2の姿勢に変更することによるマーカー22の変位量および変位方向を計測する。
【0036】
なお、本明細書で言う「第2の姿勢」は、具体的には後述するが、カメラ16の撮影画像上において、マーカー22の位置が、第1の姿勢時の位置の近傍に位置するような姿勢(第1および第2の姿勢時のマーカー22の位置の間の距離が最小(ゼロも含む)になるような姿勢)を言う。「第2の姿勢」はまた、具体的には後述するが、原点補正対象の関節に対応付けされた関節のみを動かすことにより実現される。
【0037】
また、マーカー22の変位量および変位方向の計測は、カメラ16によって行う。具体的には、カメラ16の撮影画像上におけるマーカー22の変位量および変位方向を、第1の姿勢時の撮影画像と第2の姿勢時の撮影画像とを画像処理することによって算出する。撮影画像上のマーカー22の変位量は、画素数で示される。
【0038】
以下、ロボット12の関節12h〜12lそれぞれの原点補正方法について具体的に説明する。
【0039】
図2および図3は、図1に示す曲げ関節12kの原点補正方法を説明するための図である。また、図2および図3は、曲げ関節12k用のエンコーダ(図示せず)の出力値は同一であるが、曲げ関節12kの実際の関節角度が異なる状態(角度Δθずれている状態)を示している。図2は正常状態を示し、図3は異常状態を示している。
【0040】
なお、本明細書でいう「正常」は、原点補正を必要としない状態、すなわちエンコーダの出力値と実際の関節角度が所定の対応関係にある状態を言う。また、「異常」は、原点補正を必要とする状態、すなわち、すなわちエンコーダの出力値と実際の関節角度が所定の対応関係にない状態を言う。
【0041】
図2(A)に示すように、曲げ関節12kは、ねじり関節12jの関節軸A4とねじり関節12lの関節軸A6とが同一直線上に位置するときを原点とし、そのときの関節角度をゼロ度と設定している。なお、ゼロ度に所定に対応付けされたエンコーダの出力値はSである。
【0042】
曲げ関節12kの原点補正のための第1の姿勢P(k)を実現するために、曲げ関節12kのエンコーダが出力値Sを出力するように、曲げ関節12kの関節角度を調整する(図2(A)に示す姿勢を実現する)。
【0043】
次に、ねじり関節12jの関節角度を図2(A)に示す第1の姿勢P(k)時から180度変更すると、図2(B)に示すように、マーカー22は、関節軸A4(A6)対称の位置に移動する。
【0044】
続いて、ねじり関節12lの関節角度を180度変更する(曲げ関節12kの原点補正のための第2の姿勢P(k)を実現する)。図2(C)に示すように、マーカー22は、ねじり関節12jの関節角度とねじれ関節12lの関節角度とを180度変更する前の位置(図2(A)に示す第1の姿勢P(k)時の位置)と同一の位置に移動する。
【0045】
これに対して、図3(A)に示すように、第1の姿勢P(k)を実現するために、曲げ関節12kのエンコーダが出力値Sを出力するように、曲げ関節12kの関節角度を調整すると、ねじり関節12jの関節軸A4とねじり関節12lの関節軸A6とは同一直線上に位置しない。これは、エンコーダの出力値はSであるが、曲げ関節12kの実際の関節角度がゼロ度ではなく、ゼロ度からΔθだけずれているために起こる。
【0046】
次に、ねじり関節12jの関節角度を図3(A)に示す第1の姿勢P(k)時から180度変更する(図3(B))。
【0047】
続いて、ねじり関節12lの関節角度を180度変更する(第2の姿勢P(k)を実現する)と、図3(C)に示すように、マーカー22は、ねじり関節12jの関節角度とねじれ関節12lの関節角度とを180度変更する前の位置(図3(A)に示す第1の姿勢P(k)時の位置)から変位量D(k)だけ変位する。
【0048】
したがって、第1の姿勢P(k)時および第2の姿勢P(k)時にカメラ16によってマーカー22を撮影し、その撮影画像上でマーカー22が変位しなければ、エンコーダが出力値Sを出力するときは、曲げ関節12kの実際の関節角度がゼロ度であることがわかる。
【0049】
一方、第1の姿勢P(k)から第2の姿勢P(k)への姿勢変更によって撮影画像上でマーカー22が変位した場合、エンコーダが出力値Sを出力するときは、曲げ関節12kの実際の関節角度がゼロ度以外の角度であることがわかる。
【0050】
また、第1の姿勢P(k)から第2の姿勢P(k)への姿勢変更による撮影画像上におけるマーカー22の変位量は、実際のマーカー22の変位量D(k)と対応し、実際のマーカー22の変位量D(k)はずれ量Δθに相関する。また、撮影画像上におけるマーカー22の変位方向は、ずれ量Δθのずれ方向に対応する。したがって、撮影画像上のマーカー22の変位量および変位方向に基づいて、ずれ量Δθとそのずれ方向とを算出することが可能である。
【0051】
ただし、カメラ16の撮影画像上におけるマーカー22の変位量とずれ量Δθとは相関するものの、上述したようにカメラ16が任意の位置に配置される場合、撮影画像上におけるマーカー22の変位量からずれ量Δθを算出することはできない。撮影画像上におけるマーカー22の変位量からずれ量Δθを算出するためには、カメラ16の設置位置を規定し、撮影画像上におけるマーカー22の変位量および変位方向と曲げ関節12kの関節角度の変化量との対応関係(例えば、関節角度の1度の増加に対する撮影画像上におけるマーカー22の変位量および変位方向)を予め調べておく必要がある。なお、カメラ16が任意の位置に配置される場合、すなわちずれ量Δθを算出することなく、ロボット12の曲げ関節12kの原点を補正する方法(ずれ量Δθをゼロにする方法)についてはフローチャートを用いて後述する。
【0052】
また、曲げ関節12kの原点補正にあたり、ねじり関節12j,12lはその関節角度を180度変更するだけであるため、ねじり関節12j,12lそれぞれが正常であるか否か(それぞれにおいて、エンコーダの出力値と実際の関節角度とが所定の対応関係であるか否か)は問題にならない。なぜなら、回転量は、エンコーダの出力値の変化量に基づいて制御されるためである。
【0053】
さらに、ねじり関節12jの関節角度とねじれ関節12lの関節角度とを同時に180度変更してもよい。すなわち、第1の姿勢P(k)から第2の姿勢P(k)に直接姿勢変更してもよい。
【0054】
さらにまた、曲げ関節12kの原点補正中、ねじり関節12g、曲げ関節12h、および曲げ関節12iは、固定した状態である。すなわち、第1の姿勢P(k)から第2の姿勢P(k)に姿勢変更する際に、ねじり関節12g、曲げ関節12h、および曲げ関節12iの関節角度を変更しない。
【0055】
図4および図5は、図1に示すねじり関節12jの原点補正方法を説明するための図である。また、図4および図5は、ねじり関節12j用のエンコーダ(図示せず)の出力値は同一であるが、ねじり関節12jの実際の関節角度が異なる状態(角度Δθずれている状態)を示している。図4は正常状態を示し、図5は異常状態を示している。
【0056】
図4(A)に示すように、ねじり関節12jは、曲げ関節12iの関節軸A3と曲げ関節12kの関節軸A5とが互いに平行になるときを原点とし、そのときの関節角度をゼロ度と設定している。なお、ゼロ度に所定に対応するエンコーダの出力値はSである。
【0057】
ねじり関節12jの原点補正のための第1の姿勢P(j)を実現するために、図4(A)および図5(A)に示すように、まず、ねじり関節12jのエンコーダが出力値Sを出力するように、ねじり関節12jの関節角度を調整する。また、曲げ関節12kの関節角度を、原点(ゼロ度)から一方の方向(正方向)に予め決められた角度(例えば90度)変更する。
【0058】
次に、図4(B)および図5(B)に示すように、曲げ関節12kの関節角度を、図4(A)および図5(A)に示す第1の姿勢P(j)時から他方の方向(負方向)に予め決められた角度(例えば180度)変更する。なお、図4(A)と図4(B)とに示す(図5(A)と図5(B)とに示す)曲げ関節12kの関節角度は、原点に対して+90度、−90度であるが、すなわち絶対値は同一であるが、これに限定されるわけではない。
【0059】
続いて、図4(C)および図5(C)に示すように、マーカー22が第1の姿勢P(j)時(図4(A)および図5(A)に示す姿勢時)の位置にほぼ戻るように、すなわちマーカー22の位置が第1の姿勢P(j)時のマーカー22の位置との間の距離が最小になるような角度に曲げ関節12iの関節角度を変更し、ねじり関節12jの原点補正のための第2の姿勢P(j)を実現する。
【0060】
なお、図4(C)に示すようには、第1の姿勢P(j)時のマーカー22の位置と第2の姿勢P(j)時のマーカー22の位置は完全に一致しなくてもよい。
【0061】
また、マーカー22の位置が第1の姿勢P(j)時のマーカー22の位置との間の距離が最小になるような第2の姿勢P(j)は、カメラ16の撮影画像に基づいて実現される。具体的には、コンピュータ18からの曲げ関節12iの関節角度が異なる複数の教示データに基づいて、コントローラ14がロボット12に曲げ関節12iの関節角度が異なる複数の姿勢を実現させる。ロボット12の各姿勢についてカメラ16がマーカー22を撮影し、コンピュータ18が各姿勢について撮影画像上におけるマーカー22の位置を算出する。そして、コンピュータ18は、第1の姿勢P(j)時に撮影された撮影画像上におけるマーカー22の位置との距離が最小になるような位置にマーカー22が写る撮影画像に対する姿勢を第2の姿勢P(j)と特定する。
【0062】
ねじり関節12jのエンコーダが出力値Sを出力するときに実際の関節角度がゼロ度であれば、図4(C)に示すように、第1の姿勢P(j)時のマーカー22の位置と第2の姿勢P(j)時のマーカー22の位置とはX軸方向に関しては同一である。なお、このX軸方向は、曲げ関節12iの関節軸A3方向である。
【0063】
これに対して、エンコーダが出力値Sを出力するときに実際の関節角度がゼロ度からΔθだけずれている場合、図5(C)に示すように、第1の姿勢P(j)時のマーカー22の位置と第2の姿勢P(j)時のマーカー22の位置は、X軸方向に変位量D(j)だけずれる。これは、曲げ関節12iの関節軸A3と曲げ関節12kの関節軸A5とが平行でないために起こる。
【0064】
したがって、カメラ16の視準方向がX軸方向(関節軸A3方向)と平行にならないように該カメラ16を配置し、第1の姿勢P(j)時および第2の姿勢P(j)時にカメラ16によってマーカー22を撮影し、その撮影画像上でマーカー22がX軸方向に対応する方向に変位しなければ、エンコーダが出力値Sを出力するときは、ねじり関節12jの実際の関節角度がゼロ度であることがわかる。
【0065】
一方、第1の姿勢P(j)から第2の姿勢P(j)への姿勢変更によって撮影画像上でマーカー22がX軸方向に対応する方向に変位した場合、エンコーダが出力値Sを出力するときは、ねじり関節12jの実際の関節角度がゼロ度以外の角度であることがわかる。
【0066】
また、第1の姿勢P(j)から第2の姿勢P(j)への姿勢変更による撮影画像上でのマーカー22の変位量は、実際のマーカー22のX軸方向の変位量D(j)と対応し、実際のマーカー22のX軸方向の変位量D(j)はずれ量Δθと相関する。また、撮影画像上におけるマーカー22の変位方向は、ずれ量Δθのずれ方向に対応する。したがって、撮影画像上のマーカー22の変位量および変位方向に基づいて、ずれ量Δθとそのずれ方向とを算出することが可能である。
【0067】
ただし、カメラ16の撮影画像上におけるマーカー22の変位量とずれ量Δθとは相関するものの、上述したようにカメラ16が任意の位置に配置される場合、撮影画像上におけるマーカー22の変位量からずれ量Δθを算出することはできない。撮影画像上におけるマーカー22の変位量からずれ量Δθを算出するためには、カメラ16の設置位置を規定し、撮影画像上におけるマーカー22の変位量および変位方向とねじり関節12jの関節角度の変化量との対応関係(例えば、関節角度の1度の増加に対する撮影画像上におけるマーカー22の変位量および変位方向)を予め調べておく必要がある。なお、カメラ16が任意の位置に配置される場合、すなわちずれ量Δθを算出することなく、ロボット12のねじり関節12jの原点を補正する方法(ずれ量Δθをゼロにする方法)についてはフローチャートを用いて後述する。
【0068】
また、ねじり関節12jを原点補正する前に、曲げ関節12kの原点補正を実行するのが好ましい。上述したように、ねじり関節12jの原点補正を実行するにあたり、曲げ関節12kの関節角度を使用するからである。
【0069】
さらに、ねじり関節12jの原点補正中、ねじり関節12g、曲げ関節12h、およびねじり関節12lは固定した状態である。すなわち、第1の姿勢P(j)から第2の姿勢P(j)に姿勢変更する際に、ねじり関節12g、曲げ関節12h、およびねじり関節12lの関節角度を変更しない。
【0070】
図6および図7は、図1に示すねじり関節12lの原点補正方法を説明するための図である。また、図6および図7は、ねじり関節12l用のエンコーダの出力値は同一であるが、ねじり関節12lの実際の関節角度が異なる状態(角度Δθずれている状態)を示している。図6は正常状態を示し、図7は異常状態を示している。
【0071】
図6(A)は、ねじり関節12lの実際の関節角度がゼロ度のときを示している。マーカー22は、図6(A)に示すように、ねじり関節12lの実際の関節角度がゼロ度のとき、ねじり関節12lの関節軸A6を含んで且つ曲げ関節12iの関節軸A3と直交する平面上に位置し、且つ関節軸A6上以外に位置するように取り付けられている。なお、ゼロ度に所定に対応するエンコーダの出力値はSである。
【0072】
これに対して、図7(A)は、エンコーダの出力値はSであるが、ねじり関節12lの実際の関節角度がゼロ度から角度Δθずれた状態を示している。
【0073】
ねじり関節12lの原点補正のための第1の姿勢P(l)を実現するために、図6(A)および図7(A)に示すように、まず、ねじり関節12lのエンコーダが出力値Sを出力するように、ねじり関節12lの関節角度を調整する。また、曲げ関節12kの関節角度を、ねじり関節12lの関節軸A6とねじり関節12jの関節軸A4とが同一直線上に位置するように調整する(すなわち、曲げ関節12kの関節角度を原点(ゼロ度)にする)。
【0074】
次に、図6(B)および図7(B)に示すように、ねじり関節12jとねじり関節12lの関節角度の変更量の合計が180度になるように、ねじり関節12jとねじり関節12lの関節角度を変更する。なお、図6(B)および図7(B)は、ねじり関節12jの関節角度を180度変更し、ねじり関節12lの関節角度は変更しない様子を示している。そして、図6(C)および図7(C)に示すように、マーカー22が第1の姿勢P(l)時の位置にほぼ戻るように、すなわちマーカー22の位置が第1の姿勢P(l)時のマーカー22の位置との間の距離が最小になるような角度に曲げ関節12iの関節角度を変更し、ねじり関節12lの原点補正のための第2の姿勢P(l)を実現する。
【0075】
なお、図6(C)に示すようには、第1の姿勢P1(l)時のマーカー22の位置と第2の姿勢P2(l)時のマーカー22の位置は完全に一致しなくてもよい。
【0076】
また、マーカー22の位置が第1の姿勢P(l)時のマーカー22の位置との間の距離が最小になるような第2の姿勢P(l)は、カメラ16の撮影画像に基づいて実現される。具体的には、コンピュータ18からの曲げ関節12iの関節角度が異なる複数の教示データに基づいて、コントローラ14がロボット12に曲げ関節12iの関節角度が異なる複数の姿勢を実現させる。ロボット12の各姿勢についてカメラ16がマーカー22を撮影し、コンピュータ18が各姿勢について撮影画像上におけるマーカー22の位置を算出する。そして、コンピュータ18は、第1の姿勢P(l)時に撮影された撮影画像上におけるマーカー22の位置との距離が最小になるような位置にマーカー22が写る撮影画像に対する姿勢を第2の姿勢P(l)と特定する。
【0077】
ねじり関節12lのエンコーダが出力値Sを出力するときに実際の関節角度がゼロ度であれば、図6(C)に示すように、第1の姿勢P(l)時のマーカー22の位置と第2の姿勢P(l)時のマーカー22の位置とはX軸方向に関しては同一である。なお、このX軸方向は、曲げ関節12iの関節軸A3方向である。
【0078】
これに対して、エンコーダが出力値Sを出力するときに実際の関節角度がゼロ度から角度Δθだけずれている場合、図7(C)に示すように、第1の姿勢P(l)時のマーカー22の位置と第2の姿勢P(l)時のマーカー22の位置は、X軸方向に変位量D(l)だけずれる。
【0079】
したがって、カメラ16の視準方向がX軸方向(関節軸A3方向)と平行にならないように該カメラ16を配置し、第1の姿勢P(l)時および第2の姿勢P(l)時にカメラ16によってマーカー22を撮影し、その撮影画像上でマーカー22がX軸方向に対応する方向に変位しなければ、エンコーダが出力値Sを出力するときは、ねじり関節12lの実際の関節角度がゼロ度であることがわかる。
【0080】
一方、第1の姿勢P(l)から第2の姿勢P(l)への姿勢変更によって撮影画像上でマーカー22がX軸方向に対応する方向に変位した場合、エンコーダが出力値Sを出力するときは、ねじり関節12lの実際の関節角度がゼロ度以外の角度であることがわかる。
【0081】
第1の姿勢P(l)から第2の姿勢P(l)への姿勢変更による撮影画像上でのマーカー22の変位量は、実際のマーカー22のX軸方向の変位量D(l)と対応し、実際のマーカー22のX軸方向の変位量D(l)はずれ量Δθと相関する。また、撮影画像上におけるマーカー22の変位方向は、ずれ量Δθのずれ方向に対応する。したがって、撮影画像上のマーカー22の変位量および変位方向に基づいて、ずれ量Δθとそのずれ方向とを算出することが可能である。
【0082】
ただし、カメラ16の撮影画像上におけるマーカー22の変位量とずれ量Δθとは相関するものの、上述したようにカメラ16が任意の位置に配置される場合、撮影画像上におけるマーカー22の変位量からずれ量Δθを算出することはできない。撮影画像上におけるマーカー22の変位量からずれ量Δθを算出するためには、カメラ16の設置位置を規定し、撮影画像上におけるマーカー22の変位量および変位方向とねじり関節12lの関節角度の変化量との対応関係(例えば、関節角度の1度の増加に対する撮影画像上におけるマーカー22の変位量および変位方向)を予め調べておく必要がある。なお、カメラ16が任意の位置に配置される場合、すなわちずれ量Δθを算出することなく、ロボット12のねじり関節12lの原点を補正する方法(ずれ量Δθをゼロにする方法)についてはフローチャートを用いて後述する。
【0083】
また、ねじり関節12lを原点補正する前に、曲げ関節12kの原点補正を実行するのが好ましい。上述したように、ねじり関節12lの原点補正を実行するにあたり、曲げ関節12kの関節角度をゼロ度にし、ねじり関節12lの関節軸A6とねじり関節12jの関節軸A4とを同一直線上に位置させる必要があるからである。
【0084】
さらに、ねじり関節12lの原点補正中、ねじり関節12g、曲げ関節12h、および曲げ関節12kは固定した状態である。すなわち、第1の姿勢P(l)から第2の姿勢P(l)に姿勢変更する際に、ねじり関節12g、曲げ関節12h、および曲げ関節12kの関節角度を変更しない。
【0085】
図8および図9は、図1に示すように、それぞれの関節軸A2と関節軸A3とが互いに平行である曲げ関節12h,12iそれぞれの原点補正方法を説明するための図である。また、図8および図9は、曲げ関節12h用のエンコーダの出力値は同一であるが曲げ関節12hの実際の関節角度が異なる状態(角度Δθずれている状態)を示すとともに、曲げ関節12i用のエンコーダの出力値は同一であるが曲げ関節12iの実際の関節角度が異なる状態(角度Δθiずれている状態)を示している。図8は正常状態を示し、図9は異常状態を示している。
【0086】
曲げ関節12h,12iそれぞれの原点補正のための第1の姿勢P(h,i)を実現するために、図8(A)に示すように、ねじり関節12lの関節軸A6をねじり関節12gの関節軸A1上に位置合わせする(関節軸A1とA6とを同一直線上に位置合わせする)。なお、このとき、曲げ関節12hのエンコーダの出力値はSであって、曲げ関節12iのエンコーダの出力値はSである。また、出力値Sと所定の対応関係の関節角度はθであり、出力値Sと所定の対応関係の関節角度はθiである。
【0087】
図8(A)は、曲げ関節12hのエンコーダの出力値がS、曲げ関節12iのエンコーダの出力値がSであって、曲げ関節12hの関節角度がθ、曲げ関節12iの関節角度がθの場合に、ねじり関節12lの関節軸A6がねじり関節12gの関節軸A1上に位置する状態を示している。
【0088】
これに対して、図9(A)は、曲げ関節12hのエンコーダの出力値がS、曲げ関節12iのエンコーダの出力値がSであるが、曲げ関節12hの関節角度がθ+Δθ、曲げ関節12iの関節角度がθ−Δθであるために、ねじり関節12lの関節軸A6がねじり関節12gの関節軸A1上に位置しない状態を示している。
【0089】
曲げ関節12h,12iそれぞれの原点補正のための第2の姿勢P(h,i)を実現するために、図8(B)および図9(B)に示すように、ねじり関節12gの関節角度を180度変更する。同様に、ねじり関節12lの関節角度も180度変更する。
【0090】
図8(A)に示すようにねじり関節12lの関節軸A6がねじり関節12gの関節軸A1上に位置する場合、第1の姿勢P(h,i)から第2の姿勢P(h,i)に姿勢変更すると、第2の姿勢P(h,i)時のマーカー22の位置は、図8(B)に示すように、第1の姿勢P(h,i)時のマーカー22の位置と一致する。
【0091】
これに対して、図9(A)に示すようにねじり関節12lの関節軸A6がねじり関節12gの関節軸A1上に位置しない場合、第1の姿勢P(h,i)から第2の姿勢P(h,i)に姿勢変更すると、第2の姿勢P(h,i)時のマーカー22は、図9(B)に示すように第1の姿勢P(h,i)時のマーカー22の位置から変位量D(h,i)だけずれる。
【0092】
しかしながら、変位量D(h,i)に対応するカメラ16の撮影画像上におけるマーカー22の変位量および変位方向だけでは、曲げ関節12hのずれ量Δθと曲げ関節12iのずれ量Δθとを算出することができない。その理由は、第1の姿勢P(h,i)から第2の姿勢P(h,i)への姿勢変更により、マーカー22が一方向(ねじれ関節12gの関節軸A1と直交する方向)にしか移動せず、そのため、求める2つのずれ量Δθ,Δθに対して1つの変位量D(h,i)しか得られないためである。
【0093】
この対処として、曲げ関節12h,12iの原点補正では、更なる姿勢変更を実行し、その姿勢変更によるマーカー22の変位量D(h,i)’を利用する。
【0094】
図8(C)および図9(C)には、更なる姿勢変更を実行する前の第3の姿勢P(h,i)を示している。なお、図に示すように、第3の姿勢P(h,i)は、第1の姿勢P(h,i)と同一であるが、第2の姿勢P(h,i)であってもよい。
【0095】
図8(C)および図9(C)に示す第3の姿勢P(h,i)から、ねじり関節12lの関節軸A6とねじり関節12gの関節軸A1とが同一直線上に位置する状態を維持するように、曲げ関節12h,12i、および12kの関節角度のみを変更する(第4の姿勢P(h,i)を実現する)。
【0096】
図8(D)に示すように、曲げ関節12h、12iそれぞれの実際の関節角度がエンコーダの出力値と所定の対応関係の関節角度であるときは、第4の姿勢P(h,i)時のマーカー22の位置は、第3の姿勢P(h,i)時のマーカー22の位置と一致する。
【0097】
これに対して、図9(D)に示すように、曲げ関節12hの実際の関節角度がエンコーダの出力値と所定の対応関係の関節角度からΔθずれた角度であって、曲げ関節12i実際の関節角度がエンコーダの出力値と所定の対応関係の関節角度からΔθずれた角度である場合、第4の姿勢P(h,i)時のマーカー22は、第3の姿勢P(h,i)時のマーカー22の位置から変位量D(h,i)’だけずれる。
【0098】
これにより、図9(B)に示す変位量D(h,i)と、図9(D)に示す変位量D(h,i)’とに基づいて、曲げ関節12hのずれ量Δθと曲げ関節12iのずれ量Δθとを算出することが可能になる。すなわち、2つのずれ量Δθ,Δθを未知数とする連立方程式を得ることができる。
【0099】
第1の姿勢P(h,i)から第2の姿勢P(h,i)への姿勢変更および第3の姿勢P(h,i)から第4の姿勢P(h,i)への姿勢変更による撮影画像上でのマーカー22の変位量は、実際のマーカー22の変位量D(h,i)およびD(h,i)’と対応し、実際のマーカー22の変位量D(h,i)およびD(h,i)’はずれ量ΔθおよびΔθと相関する。また、撮影画像上におけるマーカー22の変位方向は、ずれ量ΔθおよびΔθのずれ方向に対応する。したがって、撮影画像上のマーカー22の変位量および変位方向に基づいて、ずれ量ΔθおよびΔθとそのずれ方向とを算出することが可能である。
【0100】
ただし、カメラ16の撮影画像上におけるマーカー22の変位量とずれ量Δθh,Δθiは相関するものの、上述したようにカメラ16が任意の位置に配置される場合、撮影画像上におけるマーカー22の変位量からずれ量Δθh,Δθiを算出することはできない。撮影画像上におけるマーカー22の変位量からずれ量Δθh,Δθiを算出するためには、カメラ16の設置位置を規定し、撮影画像上におけるマーカー22の変位量および変位方向とねじり関節12lの関節角度の変化量との対応関係(例えば、関節角度の1度の増加に対する撮影画像上におけるマーカー22の変位量および変位方向)を予め調べておく必要がある。なお、カメラ16が任意の位置に配置される場合、すなわちずれ量Δθh,Δθiを算出することなく、ロボット12のねじり関節12lの原点を補正する方法(ずれ量Δθh,Δθiをゼロにする方法)についてはフローチャートを用いて後述する。曲げ関節12h,12iの原点補正を行う前に、曲げ関節12kとねじり関節12jの原点補正を完了しておくのが好ましい。
【0101】
また、曲げ関節12h,12iの原点補正中、ねじり関節12jは固定した状態である。すなわち、第1の姿勢P(h,i)から第2の姿勢P(h,i)に姿勢変更する際に、また第3の姿勢P3(h,i)から第4の姿勢P4(h,i)に姿勢変更する際に、ねじり関節12jの関節角度を変更しない。
【0102】
なお、曲げ関節12hおよび12iの原点補正は、図8や図9に示すようにマーカー22が反ねじり関節12g側に向く姿勢で行われるが、マーカー22がねじり関節12gに向く姿勢でも可能である。
【0103】
さらに、図8や図9に示す状態からねじり関節12jと曲げ関節12kそれぞれの関節角度を90度変更させた姿勢、すなわちマーカー22が図面直交方向に向く姿勢でも、曲げ関節12hおよび12iの原点補正は可能である。ただし、この場合、第1の姿勢から第2姿勢に変更する際に、曲げ関節12kの関節角度を180度変更する必要がある。
【0104】
ここまでは、ロボット12の関節の原点補正方法を概念的に説明してきた。ここからは、本実施の形態に係る、具体的なロボット12の関節の原点補正方法の流れについて説明する。図10は、ねじり関節12j、曲げ関節12k、およびねじり関節12lの原点補正の流れを示している。図11は、曲げ関節12h,12iの原点補正の流れを示している。なお、図10および図11に示す原点補正は、カメラ16を任意の位置に配置する場合を想定したものである。
【0105】
まず、図10を参照しながら、ねじり関節12j、曲げ関節12k、およびねじり関節12lに適用される原点補正方法の流れを説明する。
【0106】
最初のステップS10において、コンピュータ18は、第1の姿勢に対応する教示データをロボット12のコントローラ14に送信する。コントローラ14は、コンピュータ18から送信された教示データに基づいて、ロボット12を第1の姿勢に変更する(ねじり関節12j、曲げ関節12k、およびねじり関節12lそれぞれの第1の姿勢についての詳細は上述参照)。
【0107】
次にステップS12において、コンピュータ18は、第1の姿勢時のマーカー22の撮影画像をカメラ16から取得する。
【0108】
続いて、ステップS14において、コンピュータ18は、第2の姿勢に対応する教示データをロボット12のコントローラ14に送信する。コントローラ14は、コンピュータ18から送信された教示データに基づいて、ロボット12を第2の姿勢に変更する(ねじり関節12j、曲げ関節12k、およびねじり関節12lそれぞれの第2の姿勢についての詳細は上述および図2〜7参照)。
【0109】
ステップS16において、コンピュータ18は、第2の姿勢時のマーカー22の撮影画像をカメラ16から取得する。
【0110】
ステップS18において、コンピュータ18は、ステップS12とステップS16で取得した2つの撮影画像に基づいて、第1の姿勢から第2の姿勢への姿勢変更による、撮影画像上におけるマーカー22の変位量および変位方向を算出する。
【0111】
ステップS20において、コンピュータ18は、ステップ18で算出した、撮影画像上におけるマーカー22の変位量が、所定の画素数(例えば5画素)に比べて小さいか否かを判定する。すなわち、関節の原点補正を行う必要があるか否かを判定する。変位量が所定の画素数に比べて小さい場合、原点補正を行う必要がないので、コンピュータ18は原点補正を終了する。
【0112】
一方、変位量が所定の画素数に比べて大きい場合、原点補正を行う必要があるため、ステップS22において、コンピュータ18は、ステップS18で算出したマーカー22の変位量および変位方向に基づいて、ずれ量(すなわち、エンコーダの検出誤差量)を減少させるための関節角度の補正量を算出する。この補正量は、記憶装置(図示せず)に記憶されている、エンコーダの出力値と関節角度の実値との対応関係を示すデータ(対応関係データ)における、各エンコーダの出力値に対応する関節角度の値を補正する量である。
【0113】
例えば、ステップS18で算出した変位量が大きいほど大きい補正量をコンピュータ18は算出する。また、変位方向に基づいて、コンピュータ18は、補正量の正負(プラスマイナス)を決定する。
【0114】
なお、代わりとして、補正量は、一定の値(例えば、0.05度)であってもよい。
【0115】
ステップS24において、コンピュータ18は、コントローラ14に対して、ステップS22で算出した補正量に基づく関節の原点補正命令(エンコーダの原点オフセット指令)を出力する。コントローラ14は、コンピュータ18からの原点補正命令に従い、記憶装置に記憶されている、対応関係データを、ずれ量がゼロに近づくように補正する。そして、ステップS10に戻る。
【0116】
図10に示す原点補正の流れによれば、第1の姿勢から第2の姿勢への姿勢変更による撮影画像上におけるマーカー22の変位量が所定の画素数に比べて小さくなると、原点補正は完了する。
【0117】
次に、図11を参照しながら、曲げ関節12hおよび曲げ関節12iの原点補正の流れを説明する。
【0118】
最初のステップS110において、コンピュータ18は、第1の姿勢に対応する教示データをロボット12のコントローラ14に送信する。コントローラ14は、コンピュータ18から送信された教示データに基づいて、ロボット12を第1の姿勢に変更する(曲げ関節12hおよび曲げ関節12iそれぞれの第1の姿勢についての詳細は上述および図8〜9参照)。
【0119】
次に、ステップS112において、コンピュータ18は、第1の姿勢時のマーカー22の撮影画像をカメラ16から取得する。
【0120】
続いて、ステップS114において、コンピュータ18は、第2の姿勢に対応する教示データをロボット12のコントローラ14に送信する。コントローラ14は、コンピュータ18から送信された教示データに基づいて、ロボット12を第2の姿勢に変更する(曲げ関節12hおよび曲げ関節12iそれぞれの第2の姿勢についての詳細は上述および図8〜9参照)。
【0121】
ステップS116において、コンピュータ18は、第2の姿勢時のマーカー22の撮影画像をカメラ16から取得する。
【0122】
ステップS118において、コンピュータ18は、ステップS112とステップS116で取得した2つの撮影画像に基づいて、第1の姿勢から第2の姿勢への姿勢変更による、撮影画像上におけるマーカー22の第1の変位量および変位方向を算出する。
【0123】
ステップS120において、コンピュータ18は、第3の姿勢に対応する教示データをロボット12のコントローラ14に送信する。コントローラ14は、コンピュータ18から送信された教示データに基づいて、ロボット12を第3の姿勢に変更する(曲げ関節12hおよび曲げ関節12iそれぞれの第3の姿勢についての詳細は上述および図8〜9参照)。
【0124】
ステップS122において、コンピュータ18は、第3の姿勢時のマーカー22の撮影画像をカメラ16から取得する。
【0125】
ステップS124において、コンピュータ18は、第4の姿勢に対応する教示データをロボット12のコントローラ14に送信する。コントローラ14は、コンピュータ18から送信された教示データに基づいて、ロボット12を第4の姿勢に変更する(曲げ関節12hおよび曲げ関節12iそれぞれの第4の姿勢についての詳細は上述および図8〜9参照)。
【0126】
ステップS126において、コンピュータ18は、第4の姿勢時のマーカー22の撮影画像をカメラ16から取得する。
【0127】
ステップS128において、コンピュータ18は、ステップS122とステップS126で取得した2つの撮影画像に基づいて、第3の姿勢から第4の姿勢への姿勢変更による、撮影画像上におけるマーカー22の第2の変位量および変位方向を算出する。
【0128】
ステップS130において、コンピュータ18は、ステップS118で算出した第1の変位量およびステップS128で算出した第2の変異量が、所定の画素数(例えば5画素)に比べて小さいか否かを判定する。すなわち、関節の原点補正を行う必要があるか否かを判定する。第1および第2の変位量それぞれが所定の画素数に比べて小さい場合、原点補正を行う必要がないので、コンピュータ18は原点補正を終了する。
【0129】
一方、第1および第2の変位量が所定の画素数に比べて大きい場合、原点補正を行う必要があるため、ステップS132において、コンピュータ18は、ステップS118で算出したマーカー22の第1の変位量および変位方向と、ステップS130で算出したマーカー22の第2の変位量および変位方向とに基づいて、曲げ関節12h,12jのずれ量Δθ,Δθiを減少させるための該曲げ関節12h,12iそれぞれの補正量を算出する。
【0130】
ステップS134において、コンピュータ18は、ステップS132で算出した補正量に基づく曲げ関節12h,12iの原点補正命令(エンコーダの原点オフセット指令)を出力する。コントローラ14は、コンピュータ18からの原点補正命令に従い、記憶装置に記憶されている、対応関係データを、ずれ量Δθ,Δθがゼロに近づくように補正する。そして、ステップS110に戻る。
【0131】
図11に示す原点補正の流れによれば、第1の姿勢から第2の姿勢への姿勢変更による撮影画像上におけるマーカー22の第1の変位量および第3の姿勢から第4の姿勢への姿勢変更による撮影画像上におけるマーカー22の第2の変位量が所定の画素数に比べて小さくなると、原点補正は完了する。
【0132】
本実施の形態によれば、第1の姿勢から第2の姿勢(カメラ16の撮影画像上において第1の姿勢時のマーカー22の位置の近傍にマーカー22が写るような姿勢)への姿勢変更による、カメラ16の撮影画像上におけるマーカー22の変位に基づいて、原点補正対象の関節の原点補正が行われる。マーカー22の変位量が小さいので該マーカー22の近くにカメラ16を設置することできるため、分解能の低い安価なカメラ16であっても、高精度に関節の原点補正を実行することができる。
【0133】
また、第1の姿勢から第2の姿勢への変更によるカメラ16の撮影画像上におけるマーカー22の変位と、原点補正対象の関節用のエンコーダの出力値に所定に対応付けされた関節角度と該関節の実際の関節角度の間のずれ量との相関性を利用するため、また、原点補正対象の関節のみに原点補正を実行するため、原点補正対象以外の関節の関節角度やロボット12の機械パラメータ(リンク12a〜12fの長さなど)を用いて複雑な計算を行う必要がない。したがって、複雑な計算を行う必要がなく、処理能力が低い安価なコンピュータ18であっても、容易に計算することができる。
【0134】
その結果、高精度に且つ安価に、ロボット12の関節の原点補正を実行することができる。
【0135】
以上、上述の実施の形態を挙げて本発明を説明したが、本発明は上述の実施の形態に限定されない。
【0136】
例えば、上述の実施の形態では、図1に示すようにカメラは1台であるが、複数台あってもよい。ただし、各関節に対して原点補正を実行するときの原点補正用ツール20のマーカー22の位置が1台のカメラに撮影視野に収まるのであれば、カメラは1台であるのが好ましい。
【0137】
また、上述の実施の形態では、一種類の原点補正用ツール20、具体的にはねじり関節12lの関節軸A6上以外にマーカー22が位置する原点補正用ツールが使用されるが、複数種類の原点補正用ツールが使用されてもよい。
【0138】
例えば、図12(A)に示すように、マーカー22’がねじり関節12jの関節軸A6上に位置する原点補正用ツールが使用されてもよい。
【0139】
一例として、図12(A)に示す原点補正用ツールを用いる場合の曲げ関節12kの原点補正について説明する。
【0140】
図12(B)は、エンコーダの出力値に所定に対応付けされた関節角度と実際の関節角度とがずれ量Δθずれている曲げ関節12kを示している。
【0141】
図12(B)に示すように、ねじり関節12jの関節角度を180度変更すると、マーカーは変位量D(k)’ずれる。この場合、曲げ関節12kの関節軸A5からマーカー22’までの距離をLとすると、数式1の関係が成り立つ。
【数1】

【0142】
数式1を用いれば、ずれ量Δθkを算出することができる。ただし、この場合、カメラ16とロボット12の相対的な位置姿勢が既知であること、且つげ関節12kの関節軸A5からマーカー22’までの距離Lが既知であることが条件である。カメラ16がその視準方向がねじり関節12jの関節軸A4に一致するように固定されることにより、撮影画像上におけるマーカー22の変位量から、実際のマーカー22’の変位量D(k)’を算出することが可能になる。なお、この場合、カメラ16とロボット12の相対的な位置姿勢を予め調べる代わりに次のようにしてもよい。すなわち、ロボット12を動作させて所定の方向に所定の変位量だけマーカー22を変位させ、そのときの撮影画像上におけるマーカー22の変位方向および変位量をそれぞれ基準変位方向、基準変位量として記録する。次に第1の姿勢から第2の姿勢への変更による撮影画像上におけるマーカー22の変位量および変位方向と、記録した基準変位方向および基準変位量とを比較することにより、マーカー22の変位量および変位方向を求める。そして求めた変位量および変位方向に基づいて原点補正を行う。この方法によると、原点補正前に基準変位方向および基準変位量を設定するので、基準変位方向および基準変位量に誤差が含まれる可能性があるが、上記の方法を繰り返すことによって基準変位方向および基準変位量に含まれる誤差と原点のずれをともに0に収束させることができる。
【0143】
なお、このように、エンコーダの出力値に所定に対応付けされた関節角度と実際の関節角度との間のずれ量を算出することができれば、関節の原点補正は短時間で済む。
【0144】
説明すると、上述の実施の形態では、カメラ16が任意の位置に配置されるため、またロボット12のフランジ12mに対するマーカー22の位置が未知であるため、ずれ量を算出することができず、図10や図11に示すように、ずれ量がゼロに近づくような補正量を繰り返し算出するとともに、繰り返しロボット12の姿勢変更を行う必要がある。しかし、ずれ量を算出することができれば、ずれ量を一度でゼロにする補正量は一度の計算で算出することができる。その結果、原点補正に必要な時間は、ずれ量が算出できない場合に比べて、短時間になる。
【0145】
さらに、これに関連して、ロボット12のフランジ12mに対するマーカー22の位置が既知であれば、マーカー22の空間上の位置(例えば、ベース座標系ΣBにおける座標)を算出することができる。これにより、フランジ12mに対するマーカー22の位置が未知である場合に比べて、関節の原点補正は短時間になる。
【0146】
説明すると、図4および図5に示すねじり関節12jの原点補正および図6および図7に示すねじり関節12lの原点補正において、カメラの撮影画像上において第1の姿勢時の先端点の位置との距離が最小になる位置に先端点が写るような第2の姿勢は、曲げ関節12iの関節角度が異なる複数の姿勢をロボット12が取ることにより、またその姿勢毎にカメラ16がマーカー22を撮影することにより、さらにはカメラ16が撮影した撮影画像毎にその撮影画像に写るマーカー22の位置と第1の姿勢時のマーカー22の位置との距離をコンピュータ18が算出することにより行われる。すなわち、第2の姿勢を特定するのに時間が必要である。
【0147】
これに対して、マーカー22の空間上の位置を算出することができれば、第1の姿勢時のマーカー22の位置を算出し、その算出した第1の姿勢時のマーカー22の位置との距離が最小(ゼロを含む)になる位置にマーカー22が位置する第2の姿勢(すなわち第2の姿勢を実現する関節角度)を算出することができる。それにより、第1の姿勢から第2の姿勢に直接的に姿勢変更することができ、その結果として、フランジ12mに対するマーカー22の位置が未知である場合に比べて、関節の原点補正は短時間になる。
【0148】
最後に、図1においてロボット12、具体的には、ベース12nから順に、ねじり関節12g、曲げ関節12h、曲げ関節12i、ねじり関節12j、曲げ関節12k、ねじり関節12lを有するロボット12の関節の原点補正は、上述に説明した順番どおり、すなわち、(1)曲げ関節12k、(2)ねじり関節12j、(3)曲げ関節12h,12i、(4)ねじり関節12lの順番で行うのが好ましい。この順番で補正を行えば、原点補正の精度が高くなるためである。その理由は、例えば、ねじり関節12jの原点補正が、図4や図5に示すように、曲げ関節12kを使用するためである。
【産業上の利用可能性】
【0149】
本発明は、図1に示すような順番で曲げ関節やねじり関節を有するロボット以外にも適用可能である。また、曲げ関節やねじり関節に加えて並進関節を有するロボットにも適用可能であることは明らかである。
【符号の説明】
【0150】
12 ロボット
12l 関節(ねじり関節)
16 カメラ
(l) 第1の姿勢
(l) 第2の姿勢
Δθ ずれ量

【特許請求の範囲】
【請求項1】
多関節型のロボットの関節角度を検出するエンコーダの出力値と該関節角度の実値との対応関係を補正するロボットの関節の原点補正方法であって、
第1の姿勢のロボットのマーカーが撮影画像に写る位置にカメラを設置し、
各関節用のエンコーダの出力値に基づいて、原点補正対象の関節に予め対応付けされた関節のみを動かすことにより、カメラの撮影画像上において第1の姿勢時のマーカーの位置の近傍にマーカーが写るような第2の姿勢に第1の姿勢から変更し、
第1の姿勢から第2の姿勢への変更によるカメラの撮影画像上におけるマーカーの変位に基づいて、原点補正対象の関節の原点補正を行うロボットの関節の原点補正方法。
【請求項2】
原点補正対象は曲げ関節であって、
曲げ関節を挟んで第1および第2のねじり関節があって、
曲げ関節の関節角度が基準値のときは第1および第2のねじり関節の関節軸それぞれが同一直線上に位置し、
曲げ関節用のエンコーダが基準値と所定の対応関係の出力値を出力するように曲げ関節の関節角度を変更することによってロボットを第1の姿勢とし、
各関節用のエンコーダの出力値に基づいて、
(1)曲げ関節の関節角度が第1の姿勢時と同一であり、
(2)第1および第2のねじり関節の関節角度それぞれが第1の姿勢時から180度変更され、且つ、
(3)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更する請求項1に記載のロボットの関節の原点補正方法。
【請求項3】
原点補正対象はねじり関節であって、
ねじり関節を挟んで第1および第2の曲げ関節があって、
ねじり関節の関節角度が基準値のときは第1および第2の曲げ関節の関節軸が互いに平行に位置し、
ねじり関節用のエンコーダが基準値と所定の対応関係の出力値を出力するようにねじり関節の関節角度を変更すること、且つ、ロボットの先端側の第1の曲げ関節の関節角度を、一方の方向に所定の角度変更することによってロボットを第1の姿勢とし、
各関節用のエンコーダの出力値に基づいて、
(1)ねじり関節の関節角度が第1の姿勢時と同一であり、
(2)第1の曲げ関節の関節角度が第1の姿勢時から他方の方向に変更され、
(3)第2の曲げ関節の関節角度が第1の姿勢時から変更され、且つ
(4)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更する請求項1に記載のロボットの関節の原点補正方法。
【請求項4】
原点補正対象は第1のねじり関節であって、
第1のねじり関節の反先端側に別の第2のねじり関節があって、
第2のねじり関節の反先端側に曲げ関節があって、
マーカーが第1のねじり関節の関節軸上以外に位置し、
第1のねじり関節の関節角度が基準値のときはマーカーが曲げ関節の関節軸と直交し、且つ第2のねじり関節の関節軸を含む平面上に位置し、
第1のねじり関節用のエンコーダが基準値と所定の対応関係の出力値を出力するように第1のねじり関節の関節角度を変更することによってロボットを第1の姿勢とし、
各関節用のエンコーダの出力値に基づいて、
(1)第1および第2のねじり関節の関節角度の変更量の合計が180度になるように該第1および第2のねじり関節の関節角度が第1の姿勢時から変更され、
(2)曲げ関節の関節角度が第1の姿勢時から変更され、且つ、
(3)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更する請求項1に記載のロボットの関節の原点補正方法。
【請求項5】
原点補正対象は関節軸が互いに平行な第1および第2の曲げ関節であって、
反先端側の第2の曲げ関節のさらに反先端側に第1のねじり関節があって、
第1の曲げ関節の先端側に第3の曲げ関節があって、
第3の曲げ関節の先端側に第2のねじり関節があって、
(a)各関節用のエンコーダの出力値に基づいて第1および第2のねじり関節の関節軸が同一直線上に位置するようにロボットを第1の姿勢にし、
各関節用のエンコーダの出力値に基づいて、
(1)第1および第2のねじり関節の関節角度それぞれが第1の姿勢時から180度変更され、且つ、
(2)残りの関節の関節角度が第1の姿勢時と同一である、第2の姿勢に第1の姿勢から変更し、
(b)各関節用のエンコーダの出力値に基づいて第1および第2のねじり関節の関節軸が同一直線上に位置するようにロボットを第3の姿勢にし、
各関節用のエンコーダの出力値に基づいて、
(1)第1および第2のねじり関節の関節軸が同一直線上に位置するように維持し、
(2)第1、第2、および第3の曲げ関節の関節角度それぞれが第3の姿勢時から変更され、且つ、
(3)残りの関節の関節角度が第3の姿勢時と同一である、第4の姿勢に第3の姿勢から変更し、
第1の姿勢から第2の姿勢への変更によるカメラの撮影画像上におけるマーカーの第1の変位と、第3の姿勢から第4の姿勢への変更によるカメラの撮影画像上におけるマーカーの第2の変位とに基づいて、原点補正対象の関節の原点補正を行う請求項1に記載のロボットの関節の原点補正方法。
【請求項6】
多関節型のロボットの関節角度を検出するエンコーダの出力値と該関節角度の実値との対応関係を補正するロボットの関節の原点補正システムであって、
第1の姿勢のロボットのマーカーを撮影するカメラと、
各関節用のエンコーダの出力値に基づいて、原点補正対象の関節に予め対応付けされた関節のみを動かすことにより、カメラの撮影画像上において第1の姿勢時のマーカーの位置の近傍にマーカーが写るような第2の姿勢に第1の姿勢のロボットを制御するロボット制御手段と、
第1の姿勢から第2の姿勢への変更によるカメラの撮影画像上におけるマーカーの変位量および変位方向を算出するマーカー変位算出手段と、
マーカー変位算出手段が算出したマーカーの変位量および変位方向に基づいて、原点補正対象の関節の原点補正を行う原点補正手段とを有するロボットの関節の原点補正システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−223871(P2012−223871A)
【公開日】平成24年11月15日(2012.11.15)
【国際特許分類】
【出願番号】特願2011−95194(P2011−95194)
【出願日】平成23年4月21日(2011.4.21)
【出願人】(000000974)川崎重工業株式会社 (1,710)
【Fターム(参考)】