(57)【特許請求の範囲】
【請求項１】
冗長性を有するマニピュレータの先端を、該マニピュレータが持っている自由度のうち、少なくとも１つの自由度を残すように拘束し、前記先端が拘束された前記マニピュレータを構成するリンクを駆動するアクチュエータに対して制御装置から複数の姿勢変更のための関節位置指令値を出力して、前記冗長性により許容される複数の姿勢に変更し、各姿勢変更後の前記アクチュエータに設けられた位置検出器からの実測値と前記関節位置指令値の差、及び実測値に基づいて求めた前記複数の姿勢変更時の姿勢パラメータに基づいて、前記マニピュレータのロボット定数の誤差を求めてキャリブレーションを行うことを特徴とする冗長性を有するロボットのキャリブレーション方法。
【請求項２】
前記マニピュレータの冗長性として、前記マニピュレータの作業空間の次元数と、前記マニピュレータのリンク構造の自由度との差である１を有することを特徴とする請求項１に記載の冗長性を有するロボットのキャリブレーション方法。
【請求項３】
前記マニピュレータの先端が拘束される基準点は、前記マニピュレータが作業対象とするワークの載置箇所の基準箇所とすることを特徴とする請求項１または請求項２に記載の冗長性を有するロボットのキャリブレーション方法。
【請求項４】
冗長性を有するように連結された複数のリンクと、前記リンク毎に設けられたアクチュエータと、前記各リンクの関節軸の位置検出を行う位置検出器を備えたマニピュレータと、
前記マニピュレータの先端を、該マニピュレータが持っている自由度のうち、少なくとも１つの自由度を残すように拘束した状態で、前記アクチュエータに対して複数の姿勢変更のための関節位置指令値を出力し、前記冗長性により許容される複数の姿勢に変更させる制御装置と、
各姿勢変更後の前記アクチュエータに設けられた位置検出器からの実測値と前記関節位置指令値の差、及び実測値に基づいて求めた前記複数の姿勢変更時の姿勢パラメータに基づいて、前記マニピュレータのロボット定数の誤差を求めてキャリブレーションを行う演算部を備えた冗長性を有するロボットのキャリブレーション装置。
【請求項５】
前記マニピュレータの冗長性として、前記マニピュレータの作業空間の次元数が、前記マニピュレータのリンク構造の自由度との差である１を有することを特徴とする請求項４に記載の冗長性を有するロボットのキャリブレーション装置。
【請求項６】
前記マニピュレータの先端が拘束され基準点は、前記マニピュレータが作業対象とするワークの載置箇所の基準箇所とすることを特徴とする請求項４または請求項５に記載の冗長性を有するロボットのキャリブレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットのキャリブレーション方法及び装置に関し、特に冗長性を有するロボットのキャリブレーション方法及びキャリブレーション装置に関する。
【背景技術】
【０００２】
ロボットの機構パラメータ等のキャリブレーション方法は、特許文献１、特許文献２等の方法が公知である。特許文献１では、ハンドカメラとロボットのキャリブレーションを一括して同時に行う方法により、ロボットのキャリブレーションを行うようにしている。
【０００３】
特許文献２では、ロボットのアームの先端に３次元測定機の先端を結合して、ロボットのアーム先端部の位置・姿勢を計測し、ロボットの位置・姿勢を変えて複数の教示点を計測することにより、ロボットの機構パラメータを求めてキャリブレーションを行うようにしている。
【０００４】
また、特許文献３には、ロボット先端を変位検出器に係合させた状態で、ロボット先端の姿勢を変えて、各関節の関節角のデータと前記変位検出器のデータに基づいて較正を行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−２７２４１号公報
【特許文献２】特開２００１−５０７４１号公報
【特許文献３】特公平４−４５８４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１乃至特許文献３は、ハンドカメラ、３次元測定機或いは変位検出器が必要となり、コスト高となる問題がある。
本発明の目的は、冗長性を有するロボットにおいて、３次元測定機、変位検出器、ハンドカメラ等の装置を使用することなくキャリブレーションを行うことができるロボットのキャリブレーション方法及びキャリブレーション装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記問題点を解決するために、請求項１の発明は、冗長性を有するマニピュレータの先端を、該マニピュレータが持っている自由度のうち、少なくとも１つの自由度を残すように拘束し、前記先端が拘束された前記マニピュレータを構成するリンクを駆動するアクチュエータに対して制御装置から複数の姿勢変更のための関節位置指令値を出力して、前記冗長性により許容される複数の姿勢に変更し、各姿勢変更後の前記アクチュエータに設けられた位置検出器からの実測値と前記関節位置指令値の差、及び実測値に基づいて求めた前記複数の姿勢変更時の姿勢パラメータに基づいて、前記マニピュレータのロボット定数の誤差を求めてキャリブレーションを行うことを特徴とする冗長性を有するロボットのキャリブレーション方法を要旨としている。ここで、ロボット定数とは、ロボット固有の定数である。
【０００８】
なお、姿勢パラメータは、前記マニピュレータが持っている自由度のうち、拘束されなかった自由度により、位置姿勢変更がされた際に、その位置姿勢を特定可能なパラメータである。従って、例えば、１自由度が残された場合には、１つの姿勢パラメータとなり、２自由度が残された場合には、２つの姿勢パラメータとなるように、姿勢パラメータの数は、残された自由度の数と一致する。
【０００９】
請求項２の発明は、請求項１において、前記マニピュレータの冗長性として、前記マニピュレータの作業空間の次元数と、前記マニピュレータのリンク構造の自由度との差である１を有することを特徴とする。
【００１０】
請求項３の発明は、請求項１または請求項２において、前記マニピュレータの先端が拘束される基準点は、前記マニピュレータが作業対象とするワークの載置箇所の基準箇所とすることを特徴とする。
【００１１】
請求項４の発明は、冗長性を有するように連結された複数のリンクと、前記リンク毎に設けられたアクチュエータと、前記各リンクの関節軸の位置検出を行う位置検出器を備えたマニピュレータと、前記マニピュレータの先端を、該マニピュレータが持っている自由度のうち、少なくとも１つの自由度を残すように拘束した状態で、前記アクチュエータに対して複数の姿勢変更のための関節位置指令値を出力し、前記冗長性により許容される複数の姿勢に変更させる制御装置と、各姿勢変更後の前記アクチュエータに設けられた位置検出器からの実測値と前記関節位置指令値の差、及び実測値に基づいて求めた前記複数の姿勢変更時の姿勢パラメータに基づいて、前記マニピュレータのロボット定数の誤差を求めてキャリブレーションを行う演算部を備えた冗長性を備えたロボットのキャリブレーション装置を要旨としている。
【００１３】
請求項５の発明は、請求項４において、前記マニピュレータの冗長性は、前記マニピュレータの作業空間の次元数が、前記マニピュレータのリンク構造の自由度の差が１であることを特徴とする。
【００１４】
請求項６の発明は、請求項４または請求項５において、前記マニピュレータの先端が拘束される基準点は、前記マニピュレータが作業対象とするワークの載置箇所の基準箇所とすることを特徴とする。
【発明の効果】
【００１５】
請求項１の発明によれば、冗長性を有するロボットにおいて、３次元測定機、変位検出器、ハンドカメラ等の装置を使用することなくキャリブレーションを行うことができるロボットのキャリブレーション方法を提供できる。
【００１６】
さらに、異なる姿勢毎の関節位置指令値と実測値の差、及び姿勢パラメータに基づいて前記マニピュレータのロボット定数の誤差を求めてキャリブレーションが行われることにより、上記効果を容易に実現できる。
【００１７】
請求項２の発明によれば、マニピュレータの作業空間の次元数が、前記マニピュレータのリンク構造の自由度の差が１であるマニピュレータにおいて、請求項１の発明の効果を容易に実現できる。
【００１８】
請求項３の発明によれば、基準点を前記マニピュレータが作業対象とするワークの載置箇所の基準箇所とすることにより、ワークに対してツールが正確な作業を行うことができる。
【００１９】
請求項４の発明によれば、冗長性を有するロボットにおいて、３次元測定機、変位検出器、ハンドカメラ等の装置を使用することなくキャリブレーションを行うことができるロボットのキャリブレーション装置を提供できる。
【００２０】
さらに、異なる姿勢毎の関節位置指令値と実測値の差、及び姿勢パラメータに基づいて前記マニピュレータのロボット定数の誤差を求めてキャリブレーションが行われることにより、上記効果を容易に実現できる。
【００２１】
請求項５の発明によれば、マニピュレータの作業空間の次元数が、前記マニピュレータのリンク構造の自由度の差が１であるマニピュレータにおいて、請求項４の効果を容易に実現できる。
【００２２】
請求項６の発明によれば、基準点を前記マニピュレータが作業対象とするワークの載置箇所の基準箇所とすることにより、ワークに対してツールが正確な作業を行うことができるキャリブレーション装置を提供できる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１実施形態の冗長性を有するマニピュレータのスケルトン図。
【図２】第１実施形態の冗長性を有するマニピュレータの先端を固定した状態を示す概略構成図。
【図３】第１実施形態の冗長性を有するロボットのキャリブレーション装置の概略構成図。
【図４】第１実施形態の冗長性を有するロボットのキャリブレーション方法の概略説明図。
【図５】第１実施形態のキャリブレーション方法のフローチャート。
【図６】（ａ）〜（ｃ）は第２実施形態の冗長性を有するマニピュレータのキャリブレーション方法の概略説明図。
【図７】第２実施形態のキャリブレーション装置の概略構成図。
【図８】第３実施形態のキャリブレーション装置の概略構成図。
【図９】第３実施形態の冗長性を有するロボットのキャリブレーション方法の概略説明図。
【図１０】第４実施形態の冗長性を有するロボットのキャリブレーション方法の概略説明図。
【発明を実施するための形態】
【００２４】
（第１実施形態）
以下、本発明を具体化した第１実施形態の冗長性を有するロボットのキャリブレーション方法及びキャリブレーション装置を図１〜図５を参照して説明する。
【００２５】
まず、本実施形態の冗長性を有するマニピュレータについて説明する。図１に示すように、マニピュレータ１０は、８個のリンク１１〜１８が７個の関節２１〜２７により直列に連結されて形成されている。多関節ロボットであるマニピュレータ１０は、７個の関節２１〜２７においてリンク１２〜１８が旋回することのできる７自由度（自由度ｎ＝７）を有するロボットであり、その作業空間の次元数（次元数ｍ）は６であって、１（＝ｎ−ｍ）の冗長性を有する。
【００２６】
第１リンク１１は一端が床面ＦＬに固定され、他端が第１関節２１の一側に接続されている。第１関節２１の他側には、第２リンク１２の一端が接続され、第２リンク１２の他端には第２関節２２の一側が接続されている。以下同様に、第３リンク１３、第４リンク１４、第５リンク１５、第６リンク１６、第７リンク１７及び第８リンク１８が、それぞれ第３関節２３、第４関節２４、第５関節２５、第６関節２６及び第７関節２７を介して順に連結されている。
【００２７】
第１関節２１の他側は一側に対して、矢印３１に示すように、図１において上下方向に延びる軸を中心に回転可能とされており、これにより、第２リンク１２は隣接する第１リンク１１に対して、第１関節２１の回転軸（Ｊ１軸）を中心に矢印３１方向に旋回可能である。
【００２８】
また、第２関節２２の他側は一側に対して、矢印３２に示すように、図１において紙面に垂直な方向に延びる軸（Ｊ２軸）を中心に回転可能とされている。これにより、第３リンク１３は隣接する第２リンク１２に対して、第２関節２２の回転軸を中心に矢印３２方向に回転可能である。
【００２９】
以下、第３関節２３、第４関節２４、第５関節２５、第６関節２６及び第７関節２７についてもそれぞれ、回転可能とされており、第４リンク１４、第５リンク１５、第６リンク１６、第７リンク１７及び第８リンク１８も、それぞれ関節２３〜２７の回転軸（Ｊ３軸〜Ｊ７軸）を中心に、矢印３３〜３７方向に旋回可能である。尚、本願の全体にわたって、関節２１〜２７を介して連結されているリンク１１〜１８同士を、互いに隣接するリンク１１〜１８という。また、Ｊ１軸〜Ｊ７軸は、関節軸に相当する。
【００３０】
図２は、図１よりも簡略したスケルトン図で、マニピュレータ１０が示されている。同図に示すように、第１関節２１には第１サーボモータ４１が取り付けられており、電力が供給されることにより、第２リンク１２を第１リンク１１に対して旋回させる。
【００３１】
また、第２関節２２には第２サーボモータ４２が取り付けられており、電力が供給されることにより、第３リンク１３を第２リンク１２に対して旋回させる。以下、同様に、第３関節２３、第４関節２４、第５関節２５、第６関節２６及び第７関節２７にはそれぞれサーボモータ４３〜４７が取り付けられており、電力が供給されることにより、各々リンク１４〜１８を旋回させる。
【００３２】
なお、各モータは、各関節内に設けられるが、図２では、説明の便宜上、関節とは分離して図示している。また、本実施形態ではアクチュエータとしてサーボモータであるＡＣモータが使用されているが、限定されるものではない。
【００３３】
第８リンク１８の先端には、ツール４９が取り付けられている。ツール４９は第８リンク１８とともに、第７関節２７の回転軸（Ｊ７軸）を中心に図１に示すように矢印３７方向に旋回可能とされている。ツール４９は、例えば、ワーク等を把持可能なハンドである。なお、ツール４９の種類は、本発明とは関係しないため、限定されるものではない。
【００３４】
上述したようにマニピュレータ１０は、第１サーボモータ４１〜第７サーボモータ４７を駆動して第２リンク１２〜第８リンク１８を旋回させることにより、第２リンク１２〜第８リンク１８の回転角度が累積して先端部にあるツール４９に働くため、ツール４９の先端の位置および姿勢を、その作業内容に応じた目標位置および目標姿勢に一致させることが可能である。
【００３５】
次に、図３を参照して、前記マニピュレータ１０を制御する制御装置としてのコントローラーＲＣを中心とした多関節ロボットの電気的な構成を説明する。
コントローラーＲＣは、コンピュータ９０と、コンピュータ９０に電気的に接続されたＰＷＭジェネレータ５１〜５７と、ＰＷＭジェネレータ５１〜５７に電気的に接続されたサーボアンプ６１〜６７を有する。各サーボアンプ６１〜６７はそれぞれ第１サーボモータ４１〜第７サーボモータ４７に電気的に接続されている。
【００３６】
コンピュータ９０は、関節位置指令値（駆動指令）をＰＷＭジェネレータ５１〜５７に出力し、ＰＷＭジェネレータ５１〜５７は、当該関節位置指令値（駆動指令）に基づいてＰＷＭ信号をサーボアンプ６１〜６７に出力する。サーボアンプ６１〜６７は、その出力に応じてサーボモータ４１〜４７を作動させることにより、各リンク１２〜１８を旋回させる。
【００３７】
前記サーボモータ４１〜４７にはロータリエンコーダ７１〜７７が内蔵されており、インターフェイス８０を介してコンピュータ９０と接続されている。ロータリエンコーダ７１〜７７は、各々のサーボモータ４１〜４７の回動角度を検出することにより、延いては第１リンク１２〜１８のそれぞれが隣接するリンク１１〜１７に対する回転角度を検出して、その検出信号をコントローラーＲＣに送信する。ロータリエンコーダ７１〜７７は、位置検出器に相当する。なお、位置検出器としては、ロータリエンコーダに限定するものではなく、レゾルバ、或いは、ポテンショメータであってもよい。
【００３８】
なお、第１サーボモータ４１〜第７サーボモータ４７に対してロータリエンコーダ７１〜７７を設ける代わりに、リンク１１〜１８または第１関節２１〜第７関節２７に、リンク１２〜１８の回転角度を直接に検出可能なセンサを取り付けてもよい。
【００３９】
前記コンピュータ９０は、ＣＰＵ９１、ＲＯＭ９２、ＲＡＭ９３、及びハードディスク等の不揮発性の記憶部９４、及びインターフェイス９５等を備え、バス９６を介して電気的に接続されている。
【００４０】
記憶部９４には、各種データ、ロボットに各種作業を行わせるための作業プログラム、キャリブレーションプログラム、各種パラメータ等が記憶されている。ＲＯＭ９２は、システム全体のシステムプログラムが記憶されている。ＲＡＭ９３は、ＣＰＵ９１の作業用のメモリであって、各種演算等が実行されるときに一時的にデータが格納される。ＣＰＵ９１は、演算部に相当する。
【００４１】
コントローラーＲＣには入力装置８２が前記インターフェイス９５を介して接続されている。入力装置８２は、図示しないモニター画面及び各種入力キー等を有する操作盤であり、ユーザーが各種のデータを入力操作可能とされている。入力装置８２は、多関節ロボットの電源スイッチが設けられるとともに、コンピュータ９０に対して、マニピュレータ１０の先端部にあるツール４９の先端の最終目標位置および最終目標姿勢、ツール４９の先端の補間点における位置および姿勢の入力、並びに、冗長性を利用したマニピュレータ１０の姿勢変更のためのジョグ操作等による入力が可能となっている。
【００４２】
本実施形態では、第１リンク１１〜第８リンク１８、第１サーボモータ４１〜第７サーボモータ４７、ロータリエンコーダ７１〜７７を備えたマニピュレータ１０、コントローラーＲＣと、コントローラーＲＣのＣＰＵ９１により、キャリブレーション装置が構成されている。
【００４３】
（第１実施形態の作用）
次に、本実施形態による多関節ロボットのキャリブレーション方法及びキャリブレーション装置の作用について説明する。
【００４４】
図５は、キャリブレーション方法のフローチャートである。
（ステップ１０）
まず、ステップ１０（以下、ステップをＳという）ではマニピュレータ１０の先端を固定可能な固定物１００に対して、ロボットの電源を切った状態で、マニピュレータ１０の先端を図２に示すようにツール４９を介して固定する。固定物１００とは、可動しないものであればよく、また、固定物１００に対するツール４９の固定方法は、限定するものではないが、例えば、ボルトとナット等のネジ締結により作業者が行う。本実施形態では、マニピュレータ１０の先端の固定物１００に対する固定は、マニピュレータ１０が有する７自由度のうち、１自由度を残して６自由度を拘束すること意味している。
【００４５】
（Ｓ２０）
次に、Ｓ２０で固定物１００を基準点Ｋとし、そのワールド座標系の座標値を、予め作業者が測定治具等により測定しておいて、入力装置８２を介して記憶部９４に格納しておく。なお、ここでワールド座標系は、実空間におけるある場所を原点とした場合の３次元座標系である。本実施形態では、マニピュレータ１０の第１リンク１１と床面ＦＬとの接続点を原点とした３次元座標系としている。本実施形態では、基準点Ｋは、マニピュレータ１０がツール４９をハンドとしたとき、そのハンドが把持可能な、すなわち、作業対象としているワークが載置箇所の基準箇所としている。この基準箇所は、例えば基準治具等が固定される箇所である。
【００４６】
（Ｓ３０）
次に、作業者は、入力装置８２を使用して、マニピュレータ１０をジョグ操作で作動させて、ロボットの図示しない電源をオンにした状態で、入力装置８２を使用して、ジョグ操作を行い、マニピュレータ１０の冗長性により許容される姿勢に位置決めさせる。すなわち、本実施形態では、マニピュレータ１０におけるリンク構造の自由度が７自由度であり、マニピュレータ１０の作業空間の次元数が６であるため、その差が１である。本実施形態では、この冗長性を利用する。
【００４７】
具体的には、図４に示すようにマニピュレータ１０の第４関節２４は、Ｊ１軸とＪ２軸の交点を中心とし、第３リンク１３〜第４リンク１４のリンク長の合計を半径とした球Ａ１と、Ｊ６軸とＪ７軸の交点を中心とし、第５リンク１５〜第６リンク１６のリンク長の合計を半径とする球Ａ２とが形成する交差円Ｅ上の移動が可能である。
【００４８】
本実施形態では、この交差円Ｅ上に第４関節２４が位置するようにして、作業者が入力装置８２のジョグ操作により、マニピュレータ１０の姿勢を変更し、変更後に作業者は入力装置８２を操作して、姿勢変更時の、各関節の回転角度をＣＰＵ９１はロータリエンコーダ７１〜７７から各回転角度を取得する。
【００４９】
また、ＣＰＵ９１は、姿勢変更時にジョグ操作により入力された信号に基づいて、サーボモータ４１〜４７に対して出力する関節位置指令値と、前記姿勢変更時に取得された各関節の回転角度を関連付けて記憶部９４に記憶する。
【００５０】
この姿勢変更、及び姿勢変更後に当該姿勢変更された後の各関節の回転角度の取得は、求めるロボット定数の数以上の回数分、作業者は入力装置８２を使用して行う。
（Ｓ４０）
Ｓ４０では、作業者は、入力装置８２を入力操作してキャリブレーションプログラムを起動させる。
【００５１】
このプログラムが起動されると、ＣＰＵ９１は、Ｓ３０において姿勢変更毎に取得された各関節の回転角度に基づいて、姿勢変更毎の各関節のジョイント座標θ１〜θ７を演算し、それらの算出結果を記憶部９４に格納する。
【００５２】
各関節のジョイント座標とは、各リンクが隣接するリンクの関節の座標値であり、例えば、第１リンク１１と第２リンク１２のジョイントの第１関節２１のワールド座標系の座標値である。ＣＰＵ９１は、第１関節２１を始めとする第２関節２２〜第７関節２７のそれぞれのワールド座標系のジョイント座標を、ロータリエンコーダ７１〜７７から取得した各回転角度に基づいて算出し、その算出結果を記憶部９４に格納する。
【００５３】
（Ｓ５０）
Ｓ５０では、Ｓ３０で姿勢変更毎の姿勢パラメータΦを演算する。
ところで、前記交差円Ｅの中心を通る中心軸Ｏは、図４に示すように、Ｊ１軸とＪ２軸の交点と、Ｊ６軸とＪ７軸の交点の両交点を通過する軸である。第４関節２４を、この交差円Ｅ上に位置させるため、姿勢パラメータΦは、交差円Ｅ上の位置を示すパラメータとして表すことができる。そこで、交差円Ｅ上の適宜の位置Ｒから、変更された位置までの角度を、ここでは、姿勢パラメータΦとして定義されている。この姿勢パラメータΦは、Ｓ４０で算出されたジョイント座標から算出することができる。
【００５４】
例えば、交差円Ｅの軌道を描く関節（第４関節２４）の座標値を、姿勢変更毎に求めて、複数の該関節の座標値から、交差円Ｅ上の曲率中心を求める。そして、前記交差円Ｅ上の適宜の位置Ｒの座標値と前記曲率中心を結ぶ線を基準線として、姿勢変更後の第４関節２４の交差円Ｅ上軌道上における位置の旋回角度を姿勢パラメータΦとする。この姿勢パラメータΦが決まれば、マニピュレータ１０の先端が固定された場合のマニピュレータ１０の姿勢を特定することができる。
【００５５】
（Ｓ６０）
Ｓ６０では、ＣＰＵ９１は、ロボット定数の算出を基準点Ｋ、ジョイント座標、姿勢パラメータΦに基づいて算出する。
【００５６】
ここで、ロボット定数の算出を具体的に説明する。
ロボット定数は、ロボット固有の定数であり、代表的にはリンク長、隣接するリンク間の位置ずれ（オフセット）、ねじれ、或いは関節軸のエンコーダのオフセット値、或いは、各リンクの撓み等を含む。図１には、ロボット定数として、ｐ１〜ｐ４が例示として図示されている。ｐ１は例えば第１リンク１１のリンク長であり、ｐ２は第１関節２１と第２関節２２とのオフセットであり、ｐ３は第２リンク１２のリンク長であり、ｐ４は第３リンク１３の第２関節２２を通過する基準面からの角度である。これらは例示であり、限定されるものではない。キャリブレーション前のロボット定数は、予め記憶部９４に記憶されている。
【００５７】
ロボット定数で算出する以下の式では、下記のように定義する。
前記基準点Ｋの位置姿勢をＸ（ｘ，ｙ，ｚ，ａ，ｂ，ｃ）で表す。ｘ，ｙ，ｚは、ワールド座標系の３次元座標値であり、ａ，ｂ，ｃはそれぞれ三次元の各軸まわりの回転角度（ヨー角、ピッチ角、ロール角）を表している。
【００５８】
また、ジョイント座標は、θ（θ１、θ２、……，θ７）で表す。ロボット定数は、ｐ（ｐ１，ｐ２，…，ｐｎ）で表す、なお、ｎはロボット定数の個数を表す。
姿勢パラメータはΦ（Φ１，Φ２，…，Φｋ）で表す。なお、ｋは、姿勢変更の数である。
【００５９】
ジョイント座標θ１〜θ７は、下記式（１）のように表すことができる。
【００６０】
【数１】
0005938954.tif 000002
これを全微分すると、式（２）のように表すことができる。
【００６１】
【数２】
0005938954.tif 000003
ここでｄθは、関節位置指令値と、ロータリエンコーダ７１〜７７の回転角度から得られる座標値（すなわち、実測値）との差を表している。
【００６２】
なお、関数ｆが解析的に求められない場合があるため、微分係数をロボット定数ｐの微小変化に対する関数ｆの微小変化として差分に置き換えるものとし、その式を下記（３）式で表す。
【００６３】
【数３】
0005938954.tif 000004
【００６４】
【数４】
0005938954.tif 000005
なお、式（４）中、ｄθに付されている「qφ＝φr」（q＝１〜７、r＝１〜ｋ）は、qがＪq軸に関するものであり、rが第r回目の姿勢変更に関するものであることを示している。
【００６５】
式（４）で、関節位置指令値と実測値との差ｄθ、ヤコビ行列Ｊ、パラメータ誤差ｄｐを定義すると、
【００６６】
【数５】
0005938954.tif 000006
となる。
【００６７】
これを最小２乗法で解を求めると、
【００６８】
【数６】
0005938954.tif 000007
となり、パラメータ誤差ｄｐを算出することができる。
【００６９】
ＣＰＵ９１は、この求めたパラメータ誤差からロボット定数を更新し，これを先端位置誤差が予め設定された閾値以下になるまで繰返し収束計算してロボット定数を同定する。
本実施形態では、下記の特徴を有する。
【００７０】
（１）  本実施形態のキャリブレーション方法は、冗長性を有するマニピュレータ１０の先端を拘束して、１自由度を残すようにし、先端が固定されたマニピュレータ１０を構成するリンク１２〜１８を駆動するサーボモータ４１〜４７（アクチュエータ）に対してコントローラーＲＣ（制御装置）から関節位置指令値を出力して、前記冗長性により許容される複数の姿勢に変更し、各姿勢変更後のサーボモータ４１〜４７（アクチュエータ）に設けられたロータリエンコーダ７１〜７７（位置検出器）からの実測値と関節位置指令値により、マニピュレータ１０のロボット定数ｐのパラメータ誤差ｄｐを求めてキャリブレーションを行う。この結果、本実施形態によれば、冗長性を有するロボットにおいて、３次元測定機、変位検出器、ハンドカメラ等の装置を使用することなくキャリブレーションを行うことができる。
【００７１】
（２）本実施形態のキャリブレーション方法は、複数の姿勢変更のための関節位置指令値と、前記姿勢変更後のサーボモータ４１〜４７（アクチュエータ）に設けられたロータリエンコーダ７１〜７７（位置検出器）からの実測値の差、及び実測値に基づいて求めた複数の姿勢変更時の姿勢パラメータΦに基づいてマニピュレータ１０のロボット定数ｐのパラメータ誤差ｄｐを求めてキャリブレーションを行う。この結果、本実施形態の方法によれば、異なる姿勢毎の関節位置指令値と実測値の差、及び姿勢パラメータに基づいて前記マニピュレータのロボット定数のパラメータ誤差ｄｐを求めてキャリブレーションが行われることにより、上記（１）の効果を容易に実現できる。
【００７２】
（３）  本実施形態のキャリブレーション方法は、マニピュレータ１０の冗長性として、マニピュレータ１０の作業空間の次元数と、マニピュレータ１０のリンク構造の自由度との差である１を有するマニピュレータ１０において、上記（１）及び（２）の効果を容易に実現できる。
【００７３】
（４）  本実施形態のキャリブレーション方法は、マニピュレータ１０の先端が拘束された基準点Ｋは、マニピュレータ１０が作業対象とするワークの載置箇所の基準箇所とすることを特徴とする。この結果、本実施形態の方法によれば、基準点をマニピュレータ１０が作業対象とするワークの載置箇所の基準箇所とすることにより、ワークに対してツールが正確な作業を行うことができる。
【００７４】
（５）  本実施形態のキャリブレーション装置は、冗長性を有するように連結された複数のリンク１２〜１８と、各リンクに設けられたサーボモータ４１〜４７（アクチュエータ）と、各リンクのＪ１軸〜Ｊ７軸（関節軸）の位置検出を行う（位置検出器）を備えたマニピュレータ１０と、マニピュレータ１０の先端を、該マニピュレータ１０が持っている自由度のうち、１つの自由度を残すように拘束した状態で、サーボモータ４１〜４７（アクチュエータ）に対して関節位置指令値を出力し、前記冗長性により許容される複数の姿勢に変更させるコントローラーＲＣ（制御装置）を備える。また、キャリブレーション装置は、各姿勢変更後のサーボモータ４１〜４７（アクチュエータ）に設けられたロータリエンコーダ７１〜７７（位置検出器）からの実測値と関節位置指令値により、マニピュレータ１０のロボット定数ｐのパラメータ誤差ｄｐを求めてキャリブレーションを行うＣＰＵ９１（演算部）を備える。この結果、本実施形態によれば、冗長性を有するロボットにおいて、３次元測定機、変位検出器、ハンドカメラ等の装置を使用することなくキャリブレーションを行うことができるロボットのキャリブレーション装置を提供できる。
【００７５】
（６）  本実施形態のキャリブレーション装置のＣＰＵ９１（演算部）は、複数の姿勢変更のための関節位置指令値と、姿勢変更後のサーボモータ４１〜４７（アクチュエータ）に設けられたロータリエンコーダ７１〜７７（位置検出器）からの実測値の差、及び実測値に基づいて求めた複数の姿勢変更時の姿勢パラメータΦに基づいてマニピュレータ１０のロボット定数のパラメータ誤差ｄｐを求めてキャリブレーションを行う。この結果、本実施形態のキャリブレーション装置によれば、異なる姿勢毎の関節位置指令値と実測値の差、及び姿勢パラメータに基づいてマニピュレータ１０のロボット定数の誤差を求めてキャリブレーションが行われることにより、上記（５）の効果を容易に実現できる。
【００７６】
（７）  本実施形態のキャリブレーション装置では、マニピュレータ１０の冗長性として、マニピュレータ１０の作業空間の次元数と、マニピュレータ１０のリンク構造の自由度との差である１を有するマニピュレータにおいて、上記（５）、（６）の効果を容易に実現できる。
【００７７】
（８）  本実施形態のキャリブレーション装置では、マニピュレータ１０の先端が固定される基準点を、マニピュレータ１０が作業対象とするワークの載置箇所の基準箇所としている。この結果、ワークに対してツールが正確な作業を行うことができるキャリブレーション装置を提供できる。
【００７８】
（第２実施形態）
次に、第２実施形態を図６及び図７を参照して説明する。なお、第１実施形態の構成と同一または相当する構成については、同一符号を付してその説明を省略し、異なる構成について説明する。
【００７９】
本実施形態のマニピュレータ１０は、図６（ａ）、図６（ｂ）に示すように、第１リンク１１〜第５リンク１５により構成されており、各リンク間は、第１関節２１〜第４関節２４により連結されている。それぞれの関節軸であるＪ１軸〜Ｊ４軸は、紙面と直交する方向において相互に平行な軸となっている。また、本実施形態のキャリブレーション装置は、図７に示すように、第１実施形態のリンク数よりも少なくされているため、リンク数の減少に応じてロータリエンコーダ７５〜７７が省略されるとともに、サーボモータ４５〜４７が省略されている。
【００８０】
従って、マニピュレータ１０は、紙面に含まれる平面内において、固定物１００にマニピュレータ１０の先端を固定しても、図６（ａ）、図６（ｂ）に示すように作動可能である。すなわち、本実施形態のマニピュレータ１０は、リンク構造の自由度が３自由度であり、座標が２次元座標値（ｘ，ｙ）であって、マニピュレータ１０の作業空間の次元数が２であるため、その差が１である。本実施形態では、この冗長性を利用したキャリブレーション方法及びキャリブレーション装置が構成されている。
【００８１】
本実施形態のマニピュレータ１０は、第２リンク１２がＪ１軸を中心とし、自身のリンク長を半径とした円Ａ３を描く。また第４リンク１４は、Ｊ４軸を中心とし、自身のリンク長を半径とする円Ａ４を描く。そして、第３リンク１３の両端は、円Ａ３，円Ａ４上にそれぞれ位置して、姿勢が変更されることになる。そこで、本実施形態の姿勢パラメータΦは、図６（ｃ）に示すように、例えば、Ｊ２軸を通過する鉛直線を基準にその姿勢を表す角度とする。なお、前記基準は鉛直線に限定するものではなく、任意の線で特定できる線であればよい。
【００８２】
このように構成されたマニピュレータ１０では、第１実施形態と同様に、図５のフローチャートの順にＳ１０において、マニピュレータ１０の第５リンク１５の先端を固定物１００に固定する。
【００８３】
ここで、本実施形態では、マニピュレータ１０の先端の固定物１００に対する固定は、マニピュレータ１０が有する３自由度のうち、１自由度を残して２自由度を拘束すること意味している。
【００８４】
そして、Ｓ２０において基準点Ｋの座標値を取得する。Ｓ３０では、図６（ｃ）に示すようにロボット定数ｐの個数以上で、姿勢変更を行う。
Ｓ４０では、作業者は、入力装置８２を入力操作してキャリブレーションプログラムを起動させて、ＣＰＵ９１に、Ｓ３０において姿勢変更毎に取得された各関節の回転角度に基づいて、姿勢変更毎の各関節のジョイント座標θ１〜θ４を演算し、それらの算出結果を記憶部９４に格納させる。ＣＰＵ９１は、第１関節２１を始めとする第２関節２２〜第４関節２４のそれぞれのワールド座標系のジョイント座標を、ロータリエンコーダ７１〜７４から取得した各回転角度に基づいて算出し、その算出結果を記憶部９４に格納する。
【００８５】
（Ｓ５０）
Ｓ５０では、Ｓ３０で姿勢変更毎の姿勢パラメータΦをＳ４０で算出されたジョイント座標から算出する。
【００８６】
（Ｓ６０）
Ｓ６０では、ＣＰＵ９１は、第１実施形態の式（１）の代わりに、ジョイント座標θ１〜θ４を式（７）とし、また、式（３）の代わりに式（８）が使用され、式（４）の代わりに、式（９）で、関節位置指令値と実測値との差ｄθ、ヤコビ行列Ｊ、パラメータ誤差ｄｐを定義する。
【００８７】
【数７】
0005938954.tif 000008
【００８８】
【数８】
0005938954.tif 000009
【００８９】
【数９】
0005938954.tif 000010
なお、式（９）中、ｄθに付されている「qφ＝φr」（q＝１〜４、r＝１〜ｋ）は、Ｊq軸に関するものであり、rが第r回目の姿勢変更に関するものであることを示している。
【００９０】
そして、式（５）を使用して、これを最小２乗法で解を求めると、式（６）のようになる。以下、第１実施形態と同様にしてＣＰＵ９１は、この求めたパラメータ誤差からロボット定数を更新し，これを先端位置誤差が予め設定された閾値以下になるまで繰返し収束計算してロボット定数を同定する。
【００９１】
第２実施形態においても、第１実施形態の（１）〜（８）と同様な効果を奏する。
（第３実施形態）
次に、第３実施形態を図８及び図９を参照して説明する。本実施形態のマニピュレータ１０は、第１実施形態のマニピュレータ１０の第４リンク１４と第５リンク１５との間に、第９リンク１９を第４関節２４及び第８関節２８を介して連結されているところが異なっている。第８関節２８の関節軸（Ｊ８軸）はＪ４軸と平行となっている。また、第４関節２４のサーボモータ４４は、電力が供給されることにより、第９リンク１９を第４リンク１４に対して旋回させる。
【００９２】
第８関節２８には、図８に示す第８サーボモータ４８が取り付けられており、電力が供給されることにより、第５リンク１５を第９リンク１９に対して旋回させる。また、第８サーボモータ４８には、位置検出器としてのロータリエンコーダ７８が内蔵されている。
【００９３】
本実施形態のマニピュレータ１０は、８個の関節２１〜２８においてリンク１２〜１９が旋回することのできる８自由度（自由度ｎ＝８）を有するロボットであり、その作業空間の次元数（次元数ｍ）は６であって、２（＝ｎ−ｍ）の冗長性を有する。
【００９４】
本実施形態のキャリブレーション装置は、第１実施形態の構成のキャリブレーション装置の構成に加えて、上記の相違点の構成を備えるところが異なっている。また、本実施形態では、図９に示すように、マニピュレータ１０の先端を固定した状態で、姿勢変更した場合、Ｊ３軸とＪ２軸の交点と、Ｊ６軸とＪ７軸の交点の両交点を通過する線を回転軸Ｌ１として、該回転軸Ｌ１の回りでの第９リンク１９の回転角度αを１つの姿勢パラメータとし、第９リンク１９が床面ＦＬからの鉛直軸Ｌ２とのなす角度ψをもう１つの姿勢パラメータとしている。なお、回転角度αは、任意の姿勢を基準とした角度である。
【００９５】
従って、第１実施形態のフローチャートに従ってキャリブレーション方法を実行してキャリブレーション装置を使用する場合、Ｓ１０〜Ｓ４０の順序で行い、Ｓ５０では、前述の姿勢パラメータである回転角度αと、角度ψをジョイント座標に基づいて算出する。
【００９６】
なお、本実施形態では、マニピュレータ１０の先端の固定物１００に対する固定は、マニピュレータ１０が有する８自由度のうち、２自由度を残して６自由度を拘束すること意味している。
【００９７】
また、Ｓ６０では、第１実施形態の式（１）の代わりに、式（１０）が使用され、式（３）の代わりに式（１１）が使用される。
【００９８】
【数１０】
0005938954.tif 000011
【００９９】
【数１１】
0005938954.tif 000012
【０１００】
【数１２】
0005938954.tif 000013
また、式（４）の代わりに、式（１２）に示す、関節位置指令値と実測値との差ｄθ、ヤコビ行列Ｊ、及びパラメータ誤差ｄｐを使用して、式（５）及び式（６）により、パラメータ誤差を求める。
【０１０１】
なお、式（１２）中、ｄθに付されている「qφ＝φr」（q＝１〜８、r＝１〜ｋ〜ｍ）は、qがＪq軸に関するものであり、ｍが第ｍ回目の姿勢変更に関するものであることを示している。また、「ψ＝ψｎ」（ｎ＝１〜ｋ〜ｎ）のｎは、φに関してｎ回目の姿勢変更に関するものであることを示している。また、ｍとｎの合計値は、ロボット定数の個数以上にしている。
【０１０２】
ＣＰＵ９１は、この求めたパラメータ誤差からロボット定数を更新し，これを先端位置誤差が予め設定された閾値以下になるまで繰返し収束計算してロボット定数を同定する。
本実施形態では、下記の特徴を有する。
【０１０３】
（１）  本実施形態のキャリブレーション方法は、マニピュレータ１０の冗長性として、マニピュレータ１０の作業空間の次元数と、マニピュレータ１０のリンク構造の自由度との差が２を有するマニピュレータ１０において、第１実施形態の（１）、及び（２）の効果を容易に実現できる。
【０１０４】
（２）  本実施形態のキャリブレーション装置は、マニピュレータ１０の冗長性として、マニピュレータ１０の作業空間の次元数と、マニピュレータ１０のリンク構造の自由度との差である２を有するマニピュレータにおいて、第１実施形態の（５）、（６）の効果を容易に実現できる。
【０１０５】
（第４実施形態）
次に、第４実施形態を、図１０を参照して説明する。ここでは、マニピュレータ１０の構成について説明し、キャリブレーション装置においては、そのリンク数、関節数に応じて、サーボモータ及びロータリエンコーダが設けられているものと理解されたい。
【０１０６】
本実施形態のマニピュレータ１０は、図１０に示すように、第１リンク１１〜第６リンク１６、及びリンク間には第１関節２１〜第５関節２５を備え、それらの関節軸であるＪ１軸〜Ｊ５軸は、紙面と垂直な軸であって相互に平行となっている。
【０１０７】
そして、本実施形態でのキャリブレーション方法では、マニピュレータ１０の先端の固定物１００に対して固定して、以下、前記実施形態と同様のフローチャートで処理が行われる。
【０１０８】
ここで、本実施形態ではマニピュレータ１０の先端の固定物１００に対する固定は、マニピュレータ１０が有する平面５自由度のうち、２自由度を残して３自由度を拘束すること意味している。また、本実施形態のマニピュレータ１０は、リンク構造の自由度が５自由度であり、座標が２次元座標値（ｘ，ｙ）であって、マニピュレータ１０の作業空間の次元数が２であるため、その差が３である。このため、本実施形態の姿勢パラメータは、第３関節２３のＪ３軸の座標値（ｘ，ｙ）としている。すなわち、第３関節２３のＪ３軸の座標値（ｘ，ｙ）を定めればアーム姿勢を特定できる。姿勢パラメータは、残りの２自由度により位置姿勢が変更される。本実施形態では、前記Ｊ３軸の座標値（ｘ，ｙ）のそれぞれが姿勢パラメータとして定義される。このことにより、第４実施形態においても、第１実施形態等で説明したフローチャートに従ったキャリブレーション方法により、パラメータ誤差ｄｐを求めることができる。
【０１０９】
なお、本発明の実施形態は前記実施形態に限定されるものではなく、下記のように変更しても良い。
・  前記実施形態では、アクチュエータをサーボモータとしてのＡＣモータを使用したが、ＤＣモータでもよく、ステッピングモータ等を使用してもよい。
【０１１０】
・  前記各実施形態では各リンクを回転させるようにしたが、隣接するリンクに対して当該リンクを直線移動させる、アクチュエータとしてのシリンダ、ソレノイドを使用してもよい。この場合、位置検出器としては、リンクの直線移動量を検出するリニアポテンショメータ、静電容量型、或いは渦電流型等のギャップセンサ等を使用すればよい。
【０１１１】
・  なお、前記各実施形態では、説明しなかったが、一般的には、ＣＰＵ９１は、モータの電流制御を、ＰＩ制御、或いはＰＩＤ制御で行っており、モータ電流が増加して閾値を超えてモータが過負荷になる場合は、ＣＰＵ９１は、過負荷抑制のためにモータ停止制御するようにされている。ここで関節位置指令値は、キャリブレーション前の定数を使用して算出されるため、その指令値と実際の先端位置の差から、閾値を超えてモータが過負荷となるような場合は、Ｉ制御の積分ゲインを０にするとともに、Ｐ制御のゲインを小さくして制御する。このようにすると、モータ電流が小さくなり、モータの過負荷による停止がなくなる。
【符号の説明】
【０１１２】
ＲＣ…コントローラー（制御装置）、Ｋ…基準点、
１０…マニピュレータ、１２〜１８…リンク、
４１〜４７…サーボモータ（アクチュエータ）、
７１〜７７…ロータリエンコーダ（位置検出器）、
９１…ＣＰＵ（演算部）。
【図１】
0005938954.tif 000014
【図２】
0005938954.tif 000015
【図３】
0005938954.tif 000016
【図４】
0005938954.tif 000017
【図５】
0005938954.tif 000018
【図６】
0005938954.tif 000019
【図７】
0005938954.tif 000020
【図８】
0005938954.tif 000021
【図９】
0005938954.tif 000022
【図１０】
0005938954.tif 000023