(57)【要約】【課題】  ロボットキャリブレーションにおける精度を維持しつつ作業負荷を低減することを目的とする。【解決手段】  ロボットの先端に弾性変形領域を持つプローブを取り付け、キャリブレーション用の定盤平面に垂直になる位置を教示することで、ロボットと定盤の位置関係をラフに教示し、さらにプローブ先端位置一定動作を生成し、位置検出動作指令を生成し、位置検出動作を実行し、プローブ先端位置一定動作時の精度（誤差）を計算し、測定したプローブ先端位置一定動作時の精度（誤差）と幾何学的パラメータ誤差からキャリブレーションを自動実行する。【選択図】図２
2011230257.tif 000002
【特許請求の範囲】
【請求項１】
先端部に手先効果器を備え複数の関節を有するロボットのキャリブレーション装置であって、
前記手先効果器に取り付けられる接触位置検出プローブと、
前記プローブに印加された外力を検出する外力検出器と、
前記ロボットに位置検出動作を行わせることで前記プローブと接触する定盤と、
前記プローブの先端部の位置を計算するプローブ先端位置計算部と、
前記外力検出器により検出された外力と前記プローブ先端位置計算部により計算された前記プローブの位置とを時系列的に記録する記録装置と、
前記プローブの接触状態が検出された場合、計算された前記プローブの位置に基づいて接触位置を導出する、接触位置検出部と、
前記ロボットに対し、前記プローブの先端位置を一定に保ったまま姿勢を変化させるプローブ先端位置一定動作の指令を複数生成し、生成した前記プローブの各姿勢を保ったままで前記プローブを前記定盤に接触させる動作を行って前記プローブ先端位置の誤差を求めるプローブ先端位置一定動作誤差計算部と、
前記プローブ先端位置一定動作によって求めた誤差を用いて前記ロボットのキャリブレーション演算を行うロボットキャリブレーション演算部を有することを特徴とするロボットキャリブレーション装置。
【請求項２】
前記ロボットキャリブレーション装置は、
前記外力検出器の値を監視し、前記外力検出器の出力値が所定の閾値を超えた場合に接触検出と判断して前記ロボットの動作を減速停止させる外力監視部を備えることを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項３】
前記プローブの先端部は球形状をなし、
前記プローブ先端位置計算部は、順運動学によって求めた前記ロボットお手先位置に前記プローブの寸法を加えることにより前記球の中心位置を求め、
前記球の中心位置に、接触時の前記プローブのアプローチ方向に応じて前記球の半径を加算することでプローブ先端位置を計算することを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項４】
前記プローブは、
前記手先効果器から取外し可能で、少なくとも前記手先効果器への取り付け位置から前記プローブの先端方向へ１自由度の弾性変形領域、または前記プローブの先端方向以外への２方向への曲げに対して弾性変形領域を持つことを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項５】
前記記録装置は、
前記位置検出動作中の前記外力検出器の出力値とプローブ先端位置とを所定周期毎に記録することを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項６】
前記接触位置検出部は、
所定周期で記録された前記外力検出器の出力値に基づいて接触時点を求め、記録された該接触時点におけるプローブ先端位置から前記定盤との接触位置を特定することを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項７】
前記定盤は、
互いに垂直な３平面で構成され、設置面との水平度を調整する調整用ネジを有することを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項８】
前記プローブ先端位置一定動作誤差計算部は、
前記定盤平面に位置合わせした前記ロボットに前記プローブ先端位置一定動作を行わせる前記各関節の角度指令を複数生成し、
生成した前記プローブ先端の各姿勢を保ったままで前記プローブを前記定盤平面に垂直な方向から押し込む動作を生成し、
該動作を実行し、前記定盤との接触位置における前記ロボットの各関節角度を記録して接触位置を検出するという処理を所定回数繰り返すことにより、
プローブ先端位置一定動作における誤差を計算することを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項９】
前記キャリブレーション演算部は、
前記プローブ先端位置一定動作の誤差の測定値と、
前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を考慮したプローブ先端位置誤差の演算値とから連立方程式を立式し、
前記連立方程式を解き、前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を同定することを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項１０】
前記キャリブレーション演算部は、
前記プローブ先端位置一定動作誤差計算部において得た前記定盤との接触位置における前記ロボットの各軸関節角度と幾何学的パラメータ誤差から前記プローブ先端位置を計算し、プローブ先端位置の演算値と位置検出の真値からプローブ先端位置誤差を計算し、
収束演算によって前記前記プローブ先端位置誤差を最小化する前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を同定することを特徴とする請求項１記載のロボットキャリブレーション装置。
【請求項１１】
先端部に手先効果器を備え複数の関節を有するロボットのキャリブレーション方法であって、
前記手先効果器に取り付けられ弾性変形可能な接触位置検出プローブを、互いに垂直な３平面で構成された定盤のいずれかの平面に位置合わせし、その際のプローブの先端位置から、前記プローブの先端位置を一定に保ったまま姿勢を変化させるプローブ先端位置一定動作の指令を複数生成し、
生成した前記プローブの各姿勢を保ったままで前記プローブを前記定盤平面に垂直な方向から押し込む動作を生成し、該動作を実行し、前記定盤との接触位置における前記ロボットの各軸関節角度を記録して接触位置を検出するという処理を所定回数繰り返すことにより前記プローブ先端位置一定動作による誤差を測定し、プローブ先端位置一定動作の誤差の測定値と、
前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を考慮したプローブ先端位置誤差の演算値とから連立方程式を立式し、前記連立方程式を解き、前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を同定するか  もしくは、
前記定盤との接触位置における前記ロボットの各軸関節角度と幾何学的パラメータ誤差から前記プローブ先端位置を計算し、プローブ先端位置の演算値と位置検出の真値からプローブ先端位置誤差を計算し、収束演算によって前記前記プローブ先端位置誤差を最小化する前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を同定するという手順を行うことを特徴とするロボットキャリブレーション方法。
【請求項１２】
請求項１乃至１０のいずれか１項に記載のキャリブレーション装置により、複数のロボット間のキャリブレーションを行うキャリブレーション装置であって、
各々のロボットの手先効果器に取り付けられた接触位置検出プローブを、互いに垂直な３平面で構成された定盤の平面に垂直な方向から押し込む動作を生成し、
該動作を実行し、前記定盤との接触位置における前記複数のロボットの各軸関節角度を記録して、各ロボットの接触位置を検出するという処理を所定回数繰り返すことによって、前記各ロボットに基づくロボット座標系の間の誤差を計算し、前記各ロボットに基づくロボット座標系の間の位置姿勢関係を同定することを特徴とするロボットキャリブレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロボットのキャリブレーション装置及び方法に関する。
【背景技術】
【０００２】
産業用ロボットの制御において、ロボットコントローラにはロボットに関する幾何学的パラメータ（ロボット原点位置における各関節の角度、関節のコンプライアンス、リンク間の距離、リンク長、作業ツールデータ）が予め記録されており、ロボットの手先位置や姿勢の制御に用いられている。しかしながら、こうした幾何学的パラメータはロボットを構成する部品の加工誤差や部品組付誤差のために実際のロボットの数値と完全には一致せず、ロボットコントローラ内部で計算するロボットの位置姿勢と、実際のロボットの位置姿勢間に誤差が発生するという一般的な技術課題がある。
【０００３】
この一般的な技術課題を解決するために、ロボットコントローラ内部で計算するロボットの位置姿勢と実際の位置姿勢を比較し、ロボットコントローラの持つロボットの幾何学的パラメータを補正することで誤差を修正するロボットキャリブレーションが行われる。
ロボットキャリブレーションの方法として、例えば、ロボットの手先に搭載したキャリブレーション用治具をベース治具に位置合わせし、ベース治具のダイヤルゲージから手先治具の位置姿勢を計測することで原点位置を補正する手段がある（例えば、特許文献１）。
【０００４】
また、ロボット手先とロボット設置面の両方に先端が鋭利な治具を固定し、両治具を複数の位置姿勢で位置合わせすることで、ロボットコントローラ内部で計算する治具先端位置の誤差と幾何学的パラメータ誤差の微小変動の関係式を解き、幾何学的パラメータを修正する方法がある（例えば、特許文献２）。
図１３は、特許文献２の手法を説明する図である。１は垂直多関節型のロボットであり、２および２’はそれぞれ第一関節と第二関節のアクチュエータと位置検出機である。３は手先に取り付けたエンドエフェクタ、４はキャリブレーションに使用する先端が鋭利な治具である。ロボットを操作して４の治具をロボット接地面に固定したもう一方の治具（図示せず）に目視合わせする処置を繰り返して各姿勢のロボットの位置情報を取得し、ロボットコントローラ内部で計算する治具先端位置の誤差と幾何学的パラメータ誤差の微小変動の関係を示した連立方程式を解いてキャリブレーションするのである。
【０００５】
このように、従来のロボットキャリブレーション装置では、ロボットの手先に取り付けた治具をロボット接地面に固定したもう一方の治具と目視合わせすることを繰り返し各姿勢でのロボットの関節角度情報を取得してキャリブレーションする、という手順がとられていた。
【０００６】
また、ロボット手先の球状基点の位置を変化させずに姿勢のみ変化させる指令を与え、その際の球状基点の移動量を測定する処理を必要回数繰り返し、得られた測定値と姿勢変更動作の位置から機構パラメータ（幾何学的パラメータの一部）を補正する手段がある（例えば、特許文献３）。
また、２個以上のカメラで測定対象を撮影し、その画像から３次元位置を演算し絶対位置姿勢を求め、更にジャイロセンサと加速度センサで相対位置姿勢を求める方式がある（例えば、特許文献４）。この方式は、測定対象上にマーカやＬＥＤを配置し、その画像を連続的に２台以上のカメラで撮影して専用のコントローラで合成することで連続的な３次元位置を求め、カメラで撮影できない位置では加速度センサ等の相対位置情報を用いる構成である。
また、水平多関節ロボットの較正方法として、三次元的に穴位置が明確になっている複数のボスがある測定台を用い、ロボット先端の挿入ピンユニットをそこに差し込むことで、穴の位置データをロボット先端座標として測定し、測定結果から幾何学的パラメータの誤差を算出する方法がある（例えば、特許文献５）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６２−１４０７８３号公報
【特許文献２】特許第２５２０３２４号公報
【特許文献３】特開平０５−３２９７８６号公報
【特許文献４】特許第３７５４４０２号公報
【特許文献５】特許第２６０３９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１の方法は、ロボット原点位置における各関節の角度のキャリブレーションはできるが、その他の幾何学的パラメータ（関節のコンプライアンス、リンク間の距離、リンク長、作業ツールデータ）のキャリブレーションは不可能である。また、手先冶具をベース冶具に合わせる操作は手動操作であり作業者の負担を伴う。
また特許文献２の方法は、ロボット毎に作業者が教示ペンダントを用いて複数の位置に複数の姿勢で目視位置合わせする必要があり、作業者への負担が非常に大きい。さらに作業の熟練度によってキャリブレーション精度に影響が出るため、性能保証ができない点も問題である。
【０００９】
また特許文献３の方法は、ロボットの位置一点で手先の球状基点の姿勢のみ変化させて球状基点の移動量を測定する手法をとっており、ロボット据付位置に近い軸は移動量が少なくなるためキャリブレーション精度が低くなるという問題がある（高精度なキャリブレーション結果を得るためには、ロボット各軸を広範囲に動作させてキャリブレーションする必要がある）。また、測定する位置を増やした場合、測定器を増やすか、測定器を手動で動かしロボットを測定器まで移動させるという処理が増えるためキャリブレーション操作が面倒になる。さらに、球面の真球度がキャリブレーション精度に影響を与えるため、真球度に関して高い精度が必要であり、加工コストが高くなる。
また特許文献４に記載された、２個以上のカメラで測定対象を撮影した画像と加速度センサやジャイロセンサから３次元位置を演算して求める方式では、カメラで撮影できない時間が長い場合には加速度センサやジャイロセンサの２回積分に頼らなければならず、そのオフセット量が著しく不連続になるという問題がある。また、測定前にロボットと装置間の複雑なキャリブレーションを実施しないと使用できず、画像処理が必要なためリアルタイムにロボットの手先の状態量を表示できない等の問題もある。更に、このようなカメラを複数台使用する測定装置は高価であるという問題もある。
また、特許文献５に記載されたような、三次元的に穴位置が明確になっている複数のボスがある測定台を用い、ロボット先端の挿入ピンユニットをそこに差し込むことで穴の位置データをロボット先端座標として測定し、測定結果から幾何学的パラメータの誤差を算出する方法は、挿入先の複数のボスとロボットの三次元的な位置関係を予め取得する操作もしくは、ロボットを据え付ける作業が必要となるため作業負荷が大きい。
【００１０】
つまりいずれの従来技術においても、キャリブレーション操作の自動化率が低いか、もしくはキャリブレーション精度が低いという問題がある。本発明はこのような問題点に対してなされたもので、ロボットキャリブレーションにおける精度を維持しつつ作業負荷を低減することを目的とする。
【課題を解決するための手段】
【００１１】
上記問題を解決するため、本発明は、次のようにしたのである。
【００１２】
請求項１に記載の発明は、先端部に手先効果器を備え複数の関節を有するロボットのキャリブレーション装置であって、前記手先効果器に取り付けられる接触位置検出プローブと、前記プローブに印加された外力を検出する外力検出器と、前記ロボットに位置検出動作を行わせることで前記プローブと接触する定盤と、前記プローブの先端部の位置を計算するプローブ先端位置計算部と、前記外力検出器により検出された外力と前記プローブ先端位置計算部により計算された前記プローブの位置とを時系列的に記録する記録装置と、前記プローブの接触状態が検出された場合、計算された前記プローブの位置に基づいて接触位置を導出する、接触位置検出部と、前記ロボットに対し、前記プローブの先端位置を一定に保ったまま姿勢を変化させるプローブ先端位置一定動作の指令を複数生成し、生成した前記プローブの各姿勢を保ったままで前記プローブを前記定盤に接触させる動作を行って前記プローブ先端位置の誤差を求めるプローブ先端位置一定動作誤差計算部と、前記プローブ先端位置一定動作によって求めた誤差を用いて前記ロボットのキャリブレーション演算を行うロボットキャリブレーション演算部を有することを特徴とする。
【００１３】
請求項２に記載の発明は、前記ロボットキャリブレーション装置は、前記外力検出器の値を監視し、前記外力検出器の出力値が所定の閾値を超えた場合に接触検出と判断して前記ロボットの動作を減速停止させる外力監視部を備えることを特徴とする。
【００１４】
請求項３に記載の発明は、前記プローブの先端部は球形状をなし、前記プローブ先端位置計算部は、順運動学によって求めた前記ロボットお手先位置に前記プローブの寸法を加えることにより前記球の中心位置を求め、前記球の中心位置に、接触時の前記プローブのアプローチ方向に応じて前記球の半径を加算することでプローブ先端位置を計算することを特徴とする。
【００１５】
請求項４に記載の発明は、前記プローブは、前記手先効果器から取外し可能で、少なくとも前記手先効果器への取り付け位置から前記プローブの先端方向へ１自由度の弾性変形領域、または前記プローブの先端方向以外への２方向への曲げに対して弾性変形領域を持つことを特徴とする。
【００１６】
請求項５に記載の発明は、前記記録装置は、前記位置検出動作中の前記外力検出器の出力値とプローブ先端位置とを所定周期毎に記録することを特徴とする。
【００１７】
請求項６に記載の発明は、前記接触位置検出部は、所定周期で記録された前記外力検出器の出力値に基づいて接触時点を求め、記録された該接触時点におけるプローブ先端位置から前記定盤との接触位置を特定することを特徴とする。
【００１８】
請求項７に記載の発明は、前記定盤は、互いに垂直な３平面で構成され、設置面との水平度を調整する調整用ネジを有することを特徴とする。
【００１９】
請求項８に記載の発明は、前記プローブ先端位置一定動作誤差計算部は、前記定盤平面に位置合わせした前記ロボットに前記プローブ先端位置一定動作を行わせる前記各関節の角度指令を複数生成し、生成した前記プローブ先端の各姿勢を保ったままで前記プローブを前記定盤平面に垂直な方向から押し込む動作を生成し、該動作を実行し、前記定盤との接触位置における前記ロボットの各関節角度を記録して接触位置を検出するという処理を所定回数繰り返すことにより、プローブ先端位置一定動作における誤差を計算することを特徴とする。
【００２０】
請求項９に記載の発明は、前記キャリブレーション演算部は、前記プローブ先端位置一定動作の誤差の測定値と、前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を考慮したプローブ先端位置誤差の演算値とから連立方程式を立式し、前記連立方程式を解き、前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を同定することを特徴とする。
【００２１】
請求項１０に記載の発明は、前記キャリブレーション演算部は、前記プローブ先端位置一定動作誤差計算部において得た前記定盤との接触位置における前記ロボットの各軸関節角度と幾何学的パラメータ誤差から前記プローブ先端位置を計算し、プローブ先端位置の演算値と位置検出の真値からプローブ先端位置誤差を計算し、収束演算によって前記前記プローブ先端位置誤差を最小化する前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を同定することを特徴とする。
【００２２】
請求項１１に記載の発明は、先端部に手先効果器を備え複数の関節を有するロボットのキャリブレーション方法であって、前記手先効果器に取り付けられ弾性変形可能な接触位置検出プローブを、互いに垂直な３平面で構成された定盤のいずれかの平面に位置合わせし、その際のプローブの先端位置から、前記プローブの先端位置を一定に保ったまま姿勢を変化させるプローブ先端位置一定動作の指令を複数生成し、生成した前記プローブの各姿勢を保ったままで前記プローブを前記定盤平面に垂直な方向から押し込む動作を生成し、該動作を実行し、前記定盤との接触位置における前記ロボットの各軸関節角度を記録して接触位置を検出するという処理を所定回数繰り返すことにより前記プローブ先端位置一定動作による誤差を計算し、前記プローブ先端位置一定動作の誤差と、前記ロボットの関節のコンプライアンス、リンク間の距離の誤差、リンク長誤差、作業ツールデータ誤差を考慮したプローブ先端位置誤差との差を最小化する前記ロボットの各関節の原点誤差、関節のコンプライアンス、リンク間距離の誤差、リンク長誤差、作業ツールデータ誤差を同定するという手順を行うことを特徴とする。
【００２３】
請求項１２に記載の発明は、複数のロボット間のキャリブレーションを行うキャリブレーション装置であって、各々のロボットの手先効果器に取り付けられた接触位置検出プローブを、互いに垂直な３平面で構成された定盤の平面に垂直な方向から押し込む動作を生成し、該動作を実行し、前記定盤との接触位置における前記複数のロボットの各軸関節角度を記録して、各ロボットの接触位置を検出するという処理を所定回数繰り返すことによって、前記各ロボットに基づくロボット座標系の間の誤差を計算し、前記各ロボットに基づくロボット座標系の間の位置姿勢関係を同定することを特徴とする。
【発明の効果】
【００２４】
請求項１〜６、及び１１に記載の発明によると、プローブの持つ柔軟特性によりロボットの特徴である高速性を失わずに定盤にタッチングでき、力センサ等の外力検出器により敏感に接触を検出してエンコーダ分解能程度のサブミリの単位で接触位置を求めることができるため、作業負荷を低減しつつキャリブレーションを精度よく行うことができる。
請求項７、８、及び１１に記載の発明によると、ロボットキャリブレーション動作を自動生成し、接触位置を自動検出し、得られた位置検出結果からロボットキャリブレーションを自動実行することができる。
請求項９〜１１に記載の発明によると、ロボットキャリブレーションだけでなく、ロボットキャリブレーションにより得られた幾何学的パラメータを評価する過程を含めて自動的に処理することができる。
請求項１２に記載の発明によると、複数のロボットについて、各ロボットに基づくロボット座標系間のキャリブレーションを精度よく自動的に処理することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態に係るキャリブレーション装置の全体の構成図である。
【図２】（ａ）は同実施形態で使用可能なロボットの接触位置検出装置の例を示す構成図である。（ｂ）は同実施形態で使用可能なロボットの接触位置検出装置の例を示す構成図である。（ｃ）は同実施形態で使用可能なロボットの接触位置検出装置の例を示す構成図である。
【図３】本発明のキャリブレーション装置の一部である定盤の図である。
【図４】本発明の第１の実施形態の処理手順を示すフローチャートである。
【図５】ロボットを操作しプローブを定盤に接触させる様子を示す図である。
【図６】図４のＳ１２でのロボットの動作を説明する図である。
【図７】位置検出処理の方法を説明する図である。
【図８】図４のＳ１３でのロボットの動作を説明する図である。
【図９】本発明の第２の実施形態に係る処理手順を示すフローチャートである。
【図１０】本発明の第３の実施形態の処理を説明する図である。
【図１１】本発明の第３の実施形態に係る処理手順を示すフローチャートである。
【図１２】（ａ）は本発明の第３の実施形態の処理を説明する図である。（ｂ）は本発明の第３の実施形態の処理を説明する図である。
【図１３】従来の方法の説明図である。
【発明を実施するための形態】
【００２６】
以下、本発明の具体的な方法について、図に基づいて説明する。
【００２７】
＜第１実施形態＞
図１は、本発明の方法を実施するロボットキャリブレーション装置の構成図である。図において１は複数の関節軸を備えたロボットで、各関節は内蔵されたサーボモータによって駆動され、さらに各関節はリンクによって連結される。
ロボットの先端部には後述の外力検出器４を介して手先効果器２が取り付けられている。手先効果器としては、用途に応じて物体を把持するグリッパ、溶接トーチ、溶接ガンなどが用いられる。図１では手先効果器としてグリッパを例に挙げている。ただし手先効果器２は本発明の実現のためには必ずしも搭載されている必要は無い。
３は取外し可能で、プローブ長手方向、または長手方向以外の２方向の曲げ、いずれか３方向に対して弾性変形領域を持つ接触位置検出プローブで、位置検出動作に伴い作業対象物と接触する際に手先効果器もしくはロボット自身と作業対象物とが干渉しない程度の長さを持ち、接触方向に制限を与えないために先端は球状となっている。また、ロボットの作業性を損なわないように、プローブが必要な時のみ突き出す収納式でも良い。
４は一方向以上の力を検出できる外力検出器で、接触状態を導通により電気的に検出するセンサ、接触センサ、薄型圧力センサ、トルク指令値と負荷トルクとの差で表される外乱トルクを用いた力検出器でも代用できる（本実施例では力センサを例にして説明する）。
【００２８】
図２は力センサ以外の方法で作業対象物との接触検出を行う場合の構成を示した図である。
図２（ａ）は導通によって接触状態を電気的に検出するセンサを装着したロボットで、ロボット１と作業対象物０１２は電気結合線０１３により電気的に結合されている。手先効果器２に装着した導通検出プローブ０１１を作業対象物０１２に接触させることにより、作業対象物０１２を媒体として通電し、導通検出プローブ０１１においてこれを検出し、接触状態を検出することが出来るのである。
【００２９】
また、図２（ｂ）は接触センサを装着したロボットで、手先効果器２に弾性部材０２１を介してスイッチ０２２を設け、その先に剛体プローブ０２３を装着している。スイッチ０２２は物理的な拘束により所定量の変位が発生した時にスイッチングし電気的な信号を出力するスイッチであり、ロボット１の動作により、剛体プローブ０２３が作業対象物０２４に接触し、所定量の変位が発生した時に接触を検知する電気信号が、スイッチ０２２より出力されることにより、接触状態を検出することが出来るのである。
【００３０】
図２（ｃ）はトルク指令値と負荷トルクとの差で表される外乱トルクを用いた力検出方法を説明するブロック図（図はロボットの関節軸のうち１軸に対応する制御ブロックであり、実際にはロボットの軸数分だけ制御ブロックは存在する）で、通常のロボットの位置速度制御部０３１におけるトルク指令と位置フィードバックを用いて外乱トルク演算部０３２において外乱トルクを計算する。外乱トルクの演算方法として、例えば、位置フィードバックの２階微分から角加速度を求め、モータ負荷の慣性モーメントを乗ずることでトルクを計算し、トルク指令と位置フィードバックから計算したトルクの差を外乱トルクとする方法があるが、これに限定されない。外乱トルクを所定周期で計算することで、接触状態を検出することが出来るのである。
【００３１】
図１に戻り、ロボットコントローラ５について説明する。ロボットコントローラは通常のロボットの位置制御を行う位置指令生成部５１に加え、力センサ等の値を監視し接触判断を行う外力監視部５２、エンコーダ値とプローブ設計寸法および手先効果器２への取り付け位置と位置検出動作中のロボットのアプローチ方向とからプローブ先端位置を計算するプローブ先端位置計算部５３、位置検出動作中の力センサの値とプローブ先端位置を記録する記録装置５４、記録した値から接触位置を計算する接触位置検出部５５を備える。
【００３２】
ロボットコントローラ５はさらに、プローブ先端位置一定動作誤差計算部５６を備える。プローブ先端位置一定動作誤差計算部５６は、プローブ先端位置一定動作を行うためのロボットの各関節の角度指令を生成し、生成したプローブ先端姿勢で定盤７の平面に垂直な方向に第１の所定距離だけ離れた位置からプローブ先端姿勢を保ったまま定盤７の平面に向かって第１の所定距離に第２の所定距離を加えた分だけ押し込む動作を生成する。第１の所定距離は、プローブ先端位置一定動作によりプローブ先端と定盤が接触しない程度の数ｃｍ程度で、第２の所定距離は、プローブの弾性変形領域内である数ｍｍ程度である。さらにプローブ先端位置一定動作誤差計算部５６は、位置指令生成部５１によって生成した各プローブ先端姿勢にて押し込み動作を実行して、接触位置検出部５５により接触位置を検出するという処理を所定回数繰り返すことによってプローブ先端位置一定動作の精度（誤差）を計算する。
ここでプローブ先端位置一定動作とは、プローブ先端位置を一定に保った状態で姿勢のみを変えるロボットの動作を意味する。
【００３３】
ロボットコントローラ５は、その他にキャリブレーション演算部５７、幾何学的パラメータ格納部５８を備える。
キャリブレーション演算部５７ではキャリブレーション演算を行い、ロボットの幾何学的パラメータ誤差を求め、ロボットコントローラ５内のロボットの幾何学的パラメータを修正する。ロボットの幾何学的パラメータとは、具体的にはロボット原点位置における各関節の角度、関節のコンプライアンス、リンク間の距離、リンク長、作業ツールデータといった値であり、幾何学的パラメータ誤差とは、これらに対応するロボット原点位置における各関節の角度の誤差、関節のコンプライアンス、リンク間の距離の誤差、リンク長の誤差、作業ツールデータの誤差を意味する。「ロボット原点位置における各関節の角度」「ロボット原点位置における各関節の角度の誤差」は、それぞれ「各関節の原点位置」「各関節の原点誤差」と換言してもよい。
幾何学的パラメータ格納部５８は、キャリブレーション演算部５７によって修正されたロボットの幾何学的パラメータを格納する。
【００３４】
幾何学的パラメータの一種である作業ツールデータは複数個設定することが可能で、設定値の一つにプローブ３の設計寸法、および取り付け位置から計算した作業ツールデータを設定しておく。作業ツールデータは、プローブ３が弾性変形していない状態での、ロボット１の先端位置からみた接触位置検出プローブ３の先端部の位置姿勢であり、プローブ３の設計寸法および手先効果器２への取り付け位置から計算する。
プローブ先端位置は、プローブ先端の球の半径寸法以上の高精度な位置検出精度を要求する場合には、後述するようにプローブ先端位置（プローブ先端球表面と定盤７の平面との物理的な接触点位置）とプローブ先端球中心位置を分けて、アプローチ方向に応じてプローブ先端球の中心位置からプローブ先端位置を計算するが、それ以外の場合には特に使い分けをしない（プローブ先端位置はプローブ先端球の中心位置と一致すると考える）。
【００３５】
ロボットコントローラ５に接続された教示ペンダント６は、ロボットの作業教示、および再生、接触動作実行や力センサ値の検出閾値の設定変更に使用する。
【００３６】
ロボットキャリブレーションにおいて使用する定盤７の詳細を図３に示す。各辺が１０ｃｍ程度のＸＹ平面（７１）と、ＸＺ平面（７２）、ＹＺ平面（７３）で構成されている。また、ＸＹ平面、ＸＺ平面、ＹＺ平面上にはそれぞれプローブ３の位置合わせ用の印（７４、７５、７６）が印字されており、各平面７１、７２、７３における印（７４、７５、７６）の位置は設計寸法により既知であるとする。なお、事前準備において、調整ネジ７７を用いて水準計などで確認しながらＸＹ平面とロボット設置面との平行度を確保し、またＸＺ面のＸＹ平面に対する垂直度は機械的に保証されている（加工工程において精度が確保されている）。ここで言うＸＹＺ方向とは、ロボットの据付箇所を原点として、ロボットの前後方向にＸ方向、左右方向にＹ方向、上下方向にＺ方向を取るロボット座標系の軸方向を指す（図１参照）。
【００３７】
図４は本発明の実施例１の全体処理手順を示すフローチャートである。この図を用いて本実施例におけるキャリブレーションの手順を説明する。
まず、ステップＳ１０において、事前準備として、ロボット１の各関節の位置（角度）をその原点位置に合わせ、その状態での各関節の角度と、設計値より取得した関節のコンプライアンス、リンク間の距離、リンク長、作業ツールデータを、教示ペンダント６を用いて入力し、初期値として幾何学的パラメータ格納部５８に設定する。各関節の角度の原点位置合わせでは、作業者が教示ペンダントを操作してジョグ動作やインチング動作によってロボットを微速動作させて、ロボットの各軸間の接合部に予め設けられたキー溝同士の位置を目視によって合わせるなどの手段によりラフに決定する。
【００３８】
本実施例では説明のために作業座標系を以下のように設定するが、この限りではない。作業ツールデータの姿勢は、図５のように、プローブを定盤ＸＹ平面に垂直になるようなロボットの姿勢においてプローブ先端位置から取り付け位置に向かってＺ軸をとり、ロボット前方にＸ軸をとるように設定する。
作業座標系とは、ロボットの手先効果器の先に固定された直交座標系であり、ロボットの手先位置姿勢を変化させる際の基準として使う座標系である。作業座標系の軸方向は、作業者が決定した作業ツールデータから計算される。
ステップＳ１１において、図５に示すように、作業者が教示ペンダント６によりロボット１を操作し、ロボット１の手先効果器２に取り付けたプローブ３を定盤７のＸＹ平面上の位置合わせ用印の位置（７４）の上で、プローブ３の姿勢をＸＹ平面（７１）に対して垂直になるようにし、なおかつプローブ先端を定盤７と接触しない程度に近づけて位置合わせし、教示位置Ｐ１０を得る（この操作により、ロボット座標系に対する定盤ＸＹ平面（７１）の位置姿勢がラフに教示されたことになる）。
同様の手法により、ＸＺ平面（７２）とＹＺ平面（７３）に対して位置合わせし、教示位置Ｐ２０、およびＰ３０を得る。
【００３９】
ステップＳ１２からステップＳ１５の処理は、プローブ先端位置一定動作誤差計算部５６、位置指令生成部５１、接触位置検出部５５によって実行される。
ステップＳ１２では、図６に示すようにステップＳ１１で取得したＰ１０と作業ツールデータ（ステップＳ１０において設定した誤差を含んだ値）を用いて、プローブ先端が定盤７のＸＹ平面７１からＺ軸方向に前出の第１の所定距離だけ離れた位置でプローブ先端位置を固定したままで姿勢のみを変えるロボットの各関節の角度指令を生成し、定盤７のＸＹ平面７１に対するプローブ姿勢を変化させ（この位置をアプローチ開始位置とする）、プローブ姿勢を保ったまま定盤７のＸＹ平面７１に対し第１の所定距離に加えて前出の第２の所定距離だけ押し込む動作を生成し、位置指令生成部５１によって生成した押し込み動作を実行し、接触位置検出処理を実行して接触位置検出部５５によって検出位置Ｐ１１ Ｒ[ｘ１１，ｙ１１，ｚ１１]を得る。その後プローブをアプローチ開始位置に戻して、再度プローブ姿勢を変化させて定盤７のＸＹ平面７１に対し押し込み動作を実行し、検出位置Ｐ１２ Ｒ[ｘ１２，ｙ１２，ｚ１２]を得る、という処理を繰り返す。
【００４０】
プローブ姿勢の決め方は、次のようにする。ロボット１の各関節軸を駆動するサーボモータにそれぞれ設けられたエンコーダ（図示せず）により取得した関節角度とステップＳ１０で設定した作業ツールデータから計算したロボット座標系におけるプローブ姿勢  Ｒ[ｒｘｔｃｐ，ｒｙｔｃｐ，ｒｚｔｃｐ]で、ｒｘｔｃｐが−９０°〜−１０°か、１０°〜９０°、ｒｙｔｃｐが−９０°〜−１０°か、１０°〜９０°の範囲（ｒｚｔｃｐは範囲指定無し）において、求める幾何学的パラメータの個数に応じて所定数を分割し、均等になるように決定する（ロボットの可動域内で、より広い範囲を取ることで信頼性の高い結果となる。なぜなら、後述するように、ロボットの各関節角度の誤差とトルクは実際には非線形特性を持っており、より広域で計測することで、線形化した場合のモデル化誤差を少なく出来るからである）。
つまり、プローブ３が定盤７のＸＹ平面７１に対して垂直となる範囲（プローブの弾性変形方向以外）を除いて、同定すべきパラメータの個数に応じて計測姿勢範囲を分割するのである。
【００４１】
続けて、プローブ先端位置一定動作を行ってプローブ姿勢を変化させ、その都度、位置検出処理を実行するという手順を所定回数繰り返すことにより、検出位置Ｐ１２ Ｒ [ｘ１２，ｙ１２，ｚ１２] ，…，Ｐ１Ｎ Ｒ [ｘ１Ｎ，ｙ１Ｎ，ｚ１Ｎ]を得る。
ここで、Ｎは上記所定回数に相当する、位置検出処理を繰り返した回数である。
プローブ先端位置一定動作を行う際、プローブ先端位置一定動作誤差計算部５６では幾何学的パラメータ格納部５８に格納された幾何学的パラメータを用いて逆運動学演算を行い、ロボットの各関節への位置指令を生成して位置指令生成部５１を介して実際にロボットを動作させる。
仮に、幾何学的パラメータ格納部５８に格納された幾何学的パラメータが実際のロボットのそれと一致していれば、ロボットコントローラ内部で計算するプローブ先端位置と実際のプローブ先端位置は同値となり、プローブ先端位置一定動作が誤差無く行われてプローブ先端位置は変化しない。すなわち検出位置のＺ軸座標値も試行に因らず一定値となる。
しかし実際には幾何学的パラメータ誤差が存在するため、プローブ先端位置一定動作時のロボットコントローラ内部で計算するプローブ先端位置と実際のプローブ先端位置は一致せず検出位置のＺ軸座標値は試行毎に変動することになる。
なお図６では説明のため、１回目と２回目のプローブ先端位置のずれやＰ１１とＰ１２のずれ、印７４とのずれを誇張して描いている。
【００４２】
ここで接触位置検出部５５での位置検出処理について説明する。検出処理の間、外力監視部５２において、力センサの値が検出閾値を超えているかを一定の周期で監視する処理と、記録装置５４にプローブ先端位置と力センサ値を記録する処理を同時に行う。外力監視部５２において、力センサの値が検出閾値を超えた場合には接触を検出したと判断し、接触位置検出信号が位置指令生成部５１へ送信され位置指令生成部５１がロボットを減速停止させ、アプローチ開始位置へ撤退する動作を行う。記録装置５４に記録した動作中の力センサとプローブ先端位置から接触時の力センサ値の立上り時点を求め、立上り時点のプローブ先端位置を接触位置として算出する（図７参照）。
【００４３】
また記録処理はメモリに一定のバッファ領域を設け、記録時に随時上書きする。プローブ先端位置はロボット各関節のエンコーダから取得した角度の順変換によりロボット手先位置を計算し、ロボット手先位置に、設定した作業ツールデータ（ロボット手先位置を基準としたプローブ先端位置の位置）を加算するという手順で計算する。より精度良く接触位置を検出するために、下に示す（式１）のように位置検出動作におけるプローブのアプローチ方向に応じて、プローブ先端球中心位置Ｐｔｃｐにプローブ半径Ｒを加算してプローブ先端位置Ｐｔｏｐを計算しても良い。
（式１）はロボット座標系を基準とした動作でのアプローチ方向の場合分けで、場合分け以外の方向から動作した場合には、移動量の多い方向をアプローチ方向として計算しても精度に影響は無い。例えば、アプローチ動作としてＸ軸負から正方向へ２００ｍｍ、Ｙ軸正から負方向へ１０ｍｍ動作した場合（i）のＸ軸負から正方向へアプローチする場合とする。
【００４４】
2011230257.tif 000003
【００４５】
ステップＳ１３では、図８に示すように、ステップＳ１２と同様にプローブ先端位置一定動作を行い、定盤７のＸＺ平面７２に対してプローブ姿勢を変化させ、その都度、位置検出処理を実行するという手順を所定回数繰り返すことにより、検出位置Ｐ２１ Ｒ [ｘ２１，ｙ２１，ｚ２１] ，…，Ｐ２Ｎ Ｒ [ｘ２Ｎ，ｙ２Ｎ，ｚ２Ｎ]を得る（ステップＳ１２の場合と同様、幾何学的パラメータ誤差が存在する場合、プローブ先端位置一定動作時のロボットコントローラ内部で計算するプローブ先端位置と実際のプローブ先端位置は一致しないため、検出位置のＹ軸座標値は試行毎に変動する）。ここで、ＮはステップＳ１２の場合と同様、上記所定回数に相当する、位置検出処理を繰り返した回数である。
位置検出処理は、ステップＳ１１において取得したＰ２０と定盤設計寸法からＸＺ平面のおおよその位置を得、プローブ先端位置一定動作を自動生成し、位置検出動作を自動生成するという手順で実行される。
なお図８では説明のため、図６と同様に１回目と２回目のプローブ先端位置のずれやＰ２１とＰ２２のずれ、印７５とのずれを誇張して描いている。
【００４６】
ステップＳ１４では、ステップＳ１２、ステップＳ１３と同様にプローブ先端位置一定動作を行い、定盤７のＹＺ平面７３に対するプローブ姿勢を変化させ、その都度、位置検出処理を実行するという手順を所定回数繰り返すことにより、検出位置Ｐ３１ Ｒ [ｘ３１，ｙ３１，ｚ３１] ，…，Ｐ３Ｎ Ｒ [ｘ３Ｎ，ｙ３Ｎ，ｚ３Ｎ]を得る（ステップＳ１２、Ｓ１３の場合と同様、幾何学的パラメータ誤差が存在する場合、プローブ先端位置一定動作時のロボットコントローラ内部で計算するプローブ先端位置と実際のプローブ先端位置は一致しないため、検出位置のＸ軸座標値は試行毎に変動する）。ここで、ＮはステップＳ１２、Ｓ１３の場合と同様、上記所定回数に相当する位置検出処理を繰り返した回数である。
【００４７】
位置検出する所定回数Ｎは、以下に記すプローブ先端位置一定動作の精度（誤差）について、数値的な信頼性を得られる回数分だけ計測する（厳密な回数は経験的に決まるが、少なくとも各平面につき５点は必要となる）。
【００４８】
次に、ステップＳ１５において、位置検出結果の真値Ｘ，Ｙ，Ｚ（幾何学的パラメータ誤差が無い場合の位置検出した値）と位置検出の計測値ｘ３i，ｙ２i，ｚ１iからプローブ先端位置一定動作の精度（誤差）ρを（式２）により計算する。プローブ先端位置一定動作の精度（誤差）ρが閾値以内であれば終了し、閾値より大きければステップＳ１６に進みロボットキャリブレーションを実行する。
【００４９】
2011230257.tif 000004
【００５０】
ステップＳ１６では、キャリブレーション演算部５７において、測定したプローブ先端位置一定動作の精度（誤差）と幾何学的パラメータ誤差（ロボット原点位置における各関節の角度の誤差、関節のコンプライアンス、リンク間の距離の誤差、リンク長の誤差、作業ツールデータの誤差）を考慮したプローブ先端位置誤差の演算値の連立方程式からキャリブレーション演算を行う。
例えば、Ｘ軸方向に関して、プローブ先端位置一定動作後に位置検出した値をｘ３Ｎとし、位置検出の真値をＸとし、この差（計測したプローブ先端位置一定動作の精度（誤差））をΔｘiとし、ロボット原点位置における各関節の角度の誤差をΔθ１，…，Δθ６とし、関節のコンプライアンスをＣ１，…，Ｃ６とし、リンク間の距離とリンク長の誤差をΔＬ１，ΔＬ２，ΔＬ３，ΔＬ４とし、作業ツールデータの誤差をΔＴｌｘ，ΔＴｌｙ，ΔＴｌｚ，ΔＴｌｒｘ，ΔＴｌｒｙ，ΔＴｌｒｚとすると、（式３）の関係が成り立つ。
【００５１】
2011230257.tif 000005
【００５２】
ここで、ｊはロボットの複数の関節のいずれであるかを特定するための添え字であり、ｋはリンク間の距離とリンク長さの数であり、ｍは作業ツールデータの位置姿勢変数の数であり、Ｍはモータトルクである。各関節の角度の誤差について、モータトルクとコンプライアンスの積、つまり線形ばねでモデル化したが、この限りではない。より詳細に非線形モデルを用いたり、回転方向だけでなく軸間のねじれのモデルを考慮し、求めるパラメータを追加したりしても良い。
（式３）中のｘに対する偏微分はロボットの各関節の位置姿勢から容易に求めることができる。Ｙ軸方向、Ｚ軸方向においても同様に立式し、求める変数に対して解くと、（式４）の連立方程式が得られる。
【００５３】
2011230257.tif 000006
【００５４】
（式４）を掃き出し法やガウスの消去法等一般的に良く知られた数値解放で解き幾何学的パラメータ誤差（ロボット原点位置における各関節の角度の誤差、関節のコンプライアンス、リンク間の距離の誤差、リンク長の誤差、作業ツールデータの誤差）と、位置検出の真値を求める。（式４）で使用する検出位置データに添え字Ｎが付与されているが、これはステップＳ１２、ステップＳ１３、ステップＳ１４の各ステップにおいてＮ回計測した値の何れかの値を用いるという意味で、（式４）で求める変数（左辺）の解を得るためには、３点が得られれば良い。何れの値を用いるかは任意であるが、先に述べたように３点がより広域で計測されていることにより、信頼性の高いキャリブレーション結果を得ることが出来、プローブ先端位置一定動作の精度（誤差）ρも高精度になるのである。
【００５５】
次に、ステップＳ１７において、ステップＳ１６で求めた幾何学的パラメータ誤差をロボットコントローラ内の幾何学的パラメータ格納部５８の幾何学的パラメータに加算し修正する。
【００５６】
以上説明したように、本実施例では、作業者が教示ペンダントを用いて定盤平面に位置合わせした際のプローブ先端位置情報からプローブ先端位置を固定したまま姿勢のみを変えるロボットの各関節の角度指令を生成し、接触位置を検出するという処理を所定回数繰り返す。こうした処理により得たプローブ先端位置一定動作の精度（誤差）の測定値と幾何学的パラメータ誤差を考慮したプローブ先端位置誤差の演算値の連立方程式からキャリブレーション演算を行って幾何学的パラメータ誤差を同定し、ロボットコントローラ内の幾何学的パラメータを修正する。こうした手順を取ることにより、専用計測器を使うこと無く、高精度で、自動化率の高いロボットキャリブレーションを行うことが出来るのである。
また、キャリブレーションに必要な治具はプローブと定盤と外力検出器のみであり持ち運び可能なため、工場など場所を問わずにキャリブレーション作業を実施することが出来る。
【００５７】
＜第２実施形態＞
図９は本発明の別の実施形態における処理手順を示すフローチャートである。この図を用いて別の実施形態における方法について順を追って説明する。
ステップＳ２０は第１実施形態におけるステップＳ１０と同様に、ロボット１原点位置における各関節の角度と設計値より取得した関節のコンプライアンス、リンク間の距離、リンク長、作業ツールデータを、教示ペンダント６を用いて入力し、幾何学的パラメータ格納部５８に設定する。
ステップＳ２１は実施例１におけるステップＳ１１と同様に、作業者が教示ペンダント６によりロボット１を操作し、プローブ３を定盤各平面上の印に位置合わせし教示位置Ｐ１０、Ｐ２０、およびＰ３０を得る。
ステップＳ２２は、ステップＳ２１においてラフ教示した教示位置Ｐ１０からプローブ先端位置一定動作を行い、ＸＹ平面に対して位置検出処理を繰り返し、検出位置における各軸関節角度θ１１，…，θ１Ｎを得る。ただし、θは関節軸数分のデータを持っている。
ステップＳ２３は、ステップＳ２１においてラフ教示した教示位置Ｐ２０からプローブ先端位置一定動作を行い、ＸＺ平面に対して位置検出処理を繰り返し、検出位置における各軸関節角度θ２１…，θ２Ｎを得る。
ステップＳ２４は、ステップＳ２１においてラフ教示した教示位置Ｐ３０からプローブ先端位置一定動作を行い、ＹＺ平面に対して位置検出処理を繰り返し、検出位置における各軸関節角度θ３１…，θ３Ｎを得る。
【００５８】
ステップＳ２５では、ステップＳ２０で設定した幾何学的パラメータ（ロボット原点位置における各関節の角度、関節のコンプライアンス、リンク間の距離、リンク長、作業ツールデータ）と、ステップＳ２２〜ステップＳ２４で得た各軸関節角度からプローブ先端位置ｘ３i’，ｙ２i’，ｚ１i’を計算し、（式５）を用いてプローブ先端位置一定動作の精度（誤差）ρを計算し、終了判定を行う。
【００５９】
2011230257.tif 000007
【００６０】
ステップＳ２６では、キャリブレーション演算部５７において、修正パウエル法や勾配法等一般的に良く知られた収束演算を用いて、プローブ先端位置一定動作の精度（誤差）を最小化する幾何学的パラメータ誤差（ロボット原点位置における各関節の角度の誤差、関節のコンプライアンス、リンク間の距離の誤差、リンク長の誤差、作業ツールデータの誤差）と、位置検出の真値を求める。つまり、収束演算において、幾何学的パラメータを変動させて、プローブ先端位置ｘ３i’，ｙ２i’，ｚ１i’を求め、プローブ先端位置一定動作の精度（誤差）を求めるという処理をプローブ先端位置一定動作の精度（誤差）が所定値になるまで繰り返すのである。
次に、ステップＳ２７において、ステップＳ２６で求めた幾何学的パラメータ誤差をロボットコントローラ内の幾何学的パラメータ格納部５８の幾何学的パラメータに加算し修正する。
【００６１】
このように、作業者が教示ペンダントを用いて定盤平面に位置合わせした際のプローブ先端位置情報からプローブ先端位置を固定したまま姿勢のみを変えるロボットの各関節の角度指令を生成し、接触位置を検出するという処理を所定回数繰り返す。こうした処理により接触位置における各軸関節角度を得て、接触位置における各軸関節角度と幾何学的パラメータ誤差からプローブ先端位置を計算し、プローブ先端位置一定動作の精度（誤差）を最小化する幾何学的パラメータ誤差を同定し、ロボットコントローラ内の幾何学的パラメータを修正する。こうした手順を取ることにより、専用計測器を使うこと無く、高精度で、自動化率の高いロボットキャリブレーションを行うことが出来るのである。
また、キャリブレーションに必要な治具はプローブと定盤と外力検出器のみであり持ち運び可能なため、工場など場所を問わずにキャリブレーション作業を実施することが出来る。
【００６２】
＜第３実施形態＞
次に、本発明の第３の実施形態として、本発明をロボット間のキャリブレーションに適用した例を説明する。図１０はロボット間のキャリブレーションを説明する図で、図にはロボット１（１１）及び、ロボット１の据付位置に原点を取るロボット座標系１と、ロボット２（１２）及び、ロボット２の据付位置に原点を取るロボット座標系２を記載している。本実施例では説明の簡略化のために、ロボット２台の間の２次元的なキャリブレーションを例にして説明するが、これに限定されず、３台以上のロボットに対して３次元的なキャリブレーションを行うことも可能である。
ロボット間のキャリブレーションとは、図１０に示すようにロボット座標系１とロボット座標系２の間の実際の位置姿勢関係（図では位置姿勢関係を規定する同次変換行列Ｒ１ＴＲ２を記載している）を同定し、ロボットコントローラに予め設定された設計上のロボット座標系１とロボット座標系２の間の位置姿勢関係と比較し、修正することを意味する。キャリブレーションによりロボット間の正確な位置姿勢関係を得、複数ロボットを用いて精密な協調作業することが可能となる（例えば、一方のロボットが把持する部材に対する、組付けや溶接加工などの作業）。
従来のロボット間キャリブレーションとして、ＣＡＤの設計寸法を用いる方法や、先端が鋭利なプローブを両ロボットに装着し、これらを教示ペンダントで目視位置合わせする方法が取られていたが、前者は精度が悪く、後者は簡便でないという課題があった。本実施例は、これらの課題を解決するものである。
【００６３】
図１１は、本発明の第３の実施形態における処理手順を示すフローチャートである。
ステップＳ３０では、本発明の実施例１、２のいずれかの方法、もしくはその他の手法を用いて、各ロボットに対して幾何学的パラメータをキャリブレーションする。
【００６４】
ステップＳ３１では、図１２（ａ）に示すように、ロボット１（１１）、及びロボット２（１２）を動作させて、定盤７のＸＹ平面７１に対して各ロボット２点ずつ位置検出処理を実行し、検出位置ＰＲ１＿１１ Ｒ１ [ｙＲ１＿１１，ｚＲ１＿１１] ，ＰＲ１＿１２ Ｒ１ [ｙＲ１＿１２，ｚＲ１＿１２] ，ＰＲ２＿１１ Ｒ２ [ｙＲ２＿１１，ｚＲ２＿１１] ，ＰＲ２＿１２ Ｒ２ [ｙＲ２＿１２，ｚＲ２＿１２]の４点を得る。上付きのＲ１、及びＲ２はそれぞれロボット座標系１とロボット座標系２における位置を意味する。ロボット間のキャリブレーションが正確に行われている場合には、ｚＲ１＿１１とｚＲ２＿１１の差、つまりロボット座標系１原点からロボット座標系２原点へのＺ軸方向の距離はロボットコントローラに設定された値と同値になるが、往々にして誤差を含んでおり一致しない。
【００６５】
ステップＳ３２では、ステップＳ３１の処理を定盤７のＸＺ平面７２に対して行う。つまり、図１２（ｂ）に示すように、ロボット１（１１）、及びロボット２（１２）を動作させて、定盤７のＸＺ平面７２に対して各ロボット２点ずつ位置検出処理を実行し、検出位置ＰＲ１＿２１ Ｒ１ [ｙＲ１＿２１，ｚＲ１＿２１] ，ＰＲ１＿２２ Ｒ１ [ｙＲ１＿２２，ｚＲ１＿２２] ，ＰＲ２＿２１ Ｒ２ [ｙＲ２＿２１，ｚＲ２＿２１] ，ＰＲ２＿２２ Ｒ２ [ｙＲ２＿２２，ｚＲ２＿２２]の４点を得る。ロボット間のキャリブレーションが正確に行われている場合には、ｙＲ１＿２１とｙＲ２＿２１の差、つまりロボット座標系１原点からロボット座標系２原点へのＹ軸方向の距離はロボットコントローラに設定された値と同値になるが、往々にして誤差を含んでおり一致しない。
【００６６】
ステップＳ３３では、（式６）を用いてロボット座標系１とロボット座標系２の間の位置姿勢関係を規定する同次変換行列Ｒ１ＴＲ２を求める。
【００６７】
2011230257.tif 000008
ただし、ａ１Ｒ１，ａ１Ｒ２，ａ２Ｒ１，ａ２Ｒ２は（式７）より求める。
【００６８】
2011230257.tif 000009
【００６９】
ステップＳ３４では、ステップＳ３３において得られた（計測した）ロボット座標系１とロボット座標系２の間の位置姿勢関係Ｒ１ＴＲ２を、ロボットコントローラに予め設定してあるロボット座標系１とロボット座標系２の間の位置姿勢関係に上書きし、正確なロボット座標系１とロボット座標系２の間の位置姿勢関係を設定する。
【００７０】
このように、接触位置検出をロボット間キャリブレーションに適用することで、従来は課題となっていたキャリブレーション作業の負担を軽減し、かつ高精度にロボット間の位置姿勢関係を得ることが出来るのである。
また、キャリブレーションに必要な治具はプローブと定盤と外力検出器のみであり持ち運び可能なため、工場など場所を問わずにキャリブレーション作業を実施することが出来る。
【符号の説明】
【００７１】
１  ロボット
１１  ロボット１
１２  ロボット２
２  手先効果器
３  接触位置検出プローブ
４  外力検出器
５  ロボットコントローラ
５１  位置指令生成部
５２  外力監視部
５３  プローブ先端位置計算部
５４  記録装置
５５  接触位置検出部
５６  プローブ先端位置一定動作誤差計算部
５７  キャリブレーション演算部
５８  幾何学的パラメータ格納部
６  教示ペンダント
７  定盤
７１  ＸＹ平面
７２  ＸＺ平面
７３  ＹＺ平面
７４  ＸＹ平面の接触プローブ位置合わせ用の印
７５  ＸＺ平面の接触プローブ位置合わせ用の印
７６  ＹＺ平面の接触プローブ位置合わせ用の印
７７  平行度調整のネジ
【図１】
2011230257.tif 000010
【図２】
2011230257.tif 000011
【図３】
2011230257.tif 000012
【図４】
2011230257.tif 000013
【図５】
2011230257.tif 000014
【図６】
2011230257.tif 000015
【図７】
2011230257.tif 000016
【図８】
2011230257.tif 000017
【図９】
2011230257.tif 000018
【図１０】
2011230257.tif 000019
【図１１】
2011230257.tif 000020
【図１２】
2011230257.tif 000021
【図１３】
2011230257.tif 000022