(57)【特許請求の範囲】
【請求項１】
複数の関節を有するロボットアームの先端部に、ロボットハンドが取り付けられ、前記ロボットアームの各関節が、モータを有する関節駆動装置と、関節角度を検出する関節角度検出部と、を有しており、制御装置が、作業を行う軌道データに基づき、前記ロボットアームの動作を制御するロボット制御方法であって、
前記制御装置が、中心軸に対して回転対称な形状の対称形状部材を前記ロボットハンドに把持させる把持工程と、
前記制御装置が、前記ロボットハンドに把持させた前記対称形状部材の外周面を、基準部材に突き当てた状態で前記ロボットアームの先端部を先端軸まわりに回転させながら、前記対称形状部材を前記基準部材に突き当てる力を一定とするように前記ロボットアームの動作を制御する動作工程と、
前記制御装置が、前記動作工程にて前記ロボットアームの先端部を回転させたときに前記各関節の前記関節角度検出部にて検出された検出結果を取得する取得工程と、
前記制御装置が、前記取得工程にて取得した検出結果を用いて、前記先端軸に対する前記中心軸の偏心に基づく前記軌道データの補正量を計算し、前記補正量で前記軌道データを補正する補正工程と、を備えたことを特徴とするロボット制御方法。
【請求項２】
前記補正工程では、前記制御装置が、前記取得工程にて取得した前記各関節の前記関節角度検出部にて検出された検出結果から順運動学により前記ロボットアームの先端部の位置を算出し、該算出結果から前記先端軸に対する前記中心軸の偏心情報を求め、前記偏心情報から前記補正量を計算することを特徴とする請求項１に記載のロボット制御方法。
【請求項３】
前記制御装置が、前記動作工程及び前記取得工程を、前記対称形状部材の外周面において前記先端軸の方向の第１箇所を前記基準部材に突き当てた場合、及び前記対称形状部材の外周面において前記先端軸の方向の前記第１箇所とは異なる第２箇所を前記基準部材に突き当てた場合についてそれぞれ行い、
前記補正工程では、前記制御装置が、前記取得工程にて取得した結果を用いて、前記先端軸に対する前記中心軸の偏心情報と、前記先端軸に対する前記中心軸の傾き情報とを計算し、前記偏心情報及び前記傾き情報から前記補正量を計算することを特徴とする請求項１又は２に記載のロボット制御方法。
【請求項４】
前記補正工程では、前記制御装置が、前記第１箇所を前記基準部材に突き当てた場合に前記取得工程にて取得した検出結果、及び前記第２箇所を前記基準部材に突き当てた場合に前記取得工程にて取得した検出結果から、前記第１箇所及び前記第２箇所それぞれを前記基準部材に突き当てた場合の前記先端軸に対する前記中心軸のずれ量を、前記ロボットアームの先端部を同じ回転角度とした条件でそれぞれ求め、これら２つのずれ量、及び前記第１箇所と前記第２箇所との前記先端軸の方向の距離から、前記傾き情報を求めることを特徴とする請求項３に記載のロボット制御方法。
【請求項５】
前記ロボットアームには、前記ロボットハンドに作用する力を検出する力センサが配置されており、
前記動作工程では、前記制御装置が、前記対称形状部材を前記基準部材に突き当てる力として、前記力センサにより検出された力の検出結果を取得することを特徴とする請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項６】
前記関節駆動装置は、前記モータの回転を減速する減速機を更に有しており、
前記ロボットアームの関節は、前記モータの回転角度を検出するモータ角度検出部を有しており、
前記動作工程では、前記制御装置が、前記各関節の前記モータ角度検出部による角度検出結果と、前記関節角度検出部による角度検出結果とを用いて、前記対称形状部材を前記基準部材に突き当てる力を求めることを特徴とする請求項１乃至４のいずれか１項に記載のロボット制御方法。
【請求項７】
前記動作工程では、前記制御装置が、前記各関節の前記モータ角度検出部の角度検出結果及び前記関節角度検出部の角度検出結果を用いて、前記各関節に作用するトルクを算出し、前記各関節のトルクの算出結果を用いて、前記対称形状部材を前記基準部材に突き当てる力を求めることを特徴とする請求項６に記載のロボット制御方法。
【請求項８】
前記動作工程では、前記制御装置が、前記モータ角度検出部の角度検出結果を予め設定された前記減速機の減速比で前記関節の角度に換算した結果と、前記関節角度検出部の角度検出結果との差分、及び予め設定された前記減速機のねじり剛性から、前記関節に作用するトルクを算出し、
前記各関節のトルクの算出結果及び予め設定された前記ロボットアームのリンクパラメータから、前記対称形状部材を前記基準部材に突き当てる力を算出することを特徴とする請求項７に記載のロボット制御方法。
【請求項９】
複数の関節を有するロボットアームと、
前記ロボットアームの先端部に取り付けられたロボットハンドと、
作業を行う軌道データに基づき、前記ロボットアームの動作を制御する制御装置と、を備え、
前記ロボットアームの各関節は、モータを有する関節駆動装置と、関節角度を検出する関節角度検出部と、を有し、
前記制御装置は、請求項１乃至８のいずれか１項に記載のロボット制御方法の各工程を実行することを特徴とするロボット装置。
【請求項１０】
コンピュータに、請求項１乃至８のいずれか１項に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
請求項１乃至８のいずれか１項に記載のロボット制御方法により補正した前記軌道データに従って前記ロボットアームを制御し、前記ロボットハンドに把持させた第１ワークを第２ワークに組み付けて物品を製造する物品の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多関節のロボットアームの動作を制御するロボット制御方法、ロボット装置、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年、小型で複雑な構造をした電子機器等の製品の組み立てに対する自動化の要求が高まっている。これらの製品は、小型のロボットで、高速かつ微小な力制御を伴って精密な組み付けを行う必要がある。
【０００３】
そのため、ロボットは使用に際して動作を精密に校正しておく必要があり、様々な校正装置（校正治具）や校正方法が提案されている。例えば、２つの微小変位計と円柱治具とを用い、ロボットの先端軸を回転させて微小変位計の信号を読み取り、読み取った情報からロボットの先端軸を校正する校正装置が開示されている（特許文献１参照）。
【０００４】
また、近年、生産効率化から生産現場のセル化が求められており、複数の作業工程を実行可能とするロボットハンドを備えたロボット装置が広く使用されている。このようなロボット装置は、ロボットハンドに様々な作業工程を実行させることから高い動作精度が求められており、それに伴った高い校正精度を必要としている。複数（例えば３つ）の爪を有するロボットハンドの場合、ワークを把持した際の複数の爪それぞれの位置により把持されたワークの中心軸の位置が決まるため、複数の爪の偏心を校正しておく必要がある。
【０００５】
これに対し、ワークが載置される架台に固定された弾性軸に回転可能に支持された球体部品をロボットハンドにより把持することによりロボット先端軸の偏心を校正する校正方法が開示されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１−５８４９０号公報
【特許文献２】特開２０１４−５８００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の校正装置においては、測定のために微小変位計が必要であった。一方、特許文献２には、微小変位計を用いずに、ロボットハンドの爪の位置を校正する方法が提案されている。しかしながら、特許文献２の方法では、力センサにより検出した力から、複数の爪の中心軸の偏心を校正するのに必要な校正量を算出し、算出した校正量で複数の爪をロボットアームに対して移動させて校正するといった、煩雑な調整作業が必要であった。
【０００８】
そこで、本発明は、微小変位計等の特別な測定器を用いず、ロボットハンドについて煩雑な調整作業を行わずに、ロボットハンドの位置を校正することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数の関節を有するロボットアームの先端部に、ロボットハンドが取り付けられ、前記ロボットアームの各関節が、モータを有する関節駆動装置と、関節角度を検出する関節角度検出部と、を有しており、制御装置が、作業を行う軌道データに基づき、前記ロボットアームの動作を制御するロボット制御方法であって、前記制御装置が、中心軸に対して回転対称な形状の対称形状部材を前記ロボットハンドに把持させる把持工程と、前記制御装置が、前記ロボットハンドに把持させた前記対称形状部材の外周面を、基準部材に突き当てた状態で前記ロボットアームの先端部を先端軸まわりに回転させながら、前記対称形状部材を前記基準部材に突き当てる力を一定とするように前記ロボットアームの動作を制御する動作工程と、前記制御装置が、前記動作工程にて前記ロボットアームの先端部を回転させたときに前記各関節の前記関節角度検出部にて検出された検出結果を取得する取得工程と、前記制御装置が、前記取得工程にて取得した検出結果を用いて、前記先端軸に対する前記中心軸の偏心に基づく前記軌道データの補正量を計算し、前記補正量で前記軌道データを補正する補正工程と、を備えたことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、各関節の角度から偏心に基づく補正量を算出し、補正量でロボットアームの軌道データを補正しているので、微小変位計等の特別な測定器を用いなくても、ロボットハンドの位置を校正することができる。また、ロボットアームの軌道データを補正することでロボットハンドの位置を校正しているので、ロボットハンドについて煩雑な調整作業を行う必要がない。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態に係るロボット装置を示す斜視図である。
【図２】第１実施形態に係るロボット装置のロボットアームの関節を示す部分断面図である。
【図３】第１実施形態に係るロボット装置の制御装置の構成を示すブロック図である。
【図４】第１実施形態に係るロボット装置の要部構成を示した機能ブロック図である。
【図５】第１実施形態に係るロボット装置のロボットを示す斜視図である。
【図６】第１実施形態に係るロボット制御方法を示すフローチャートである。
【図７】第１実施形態に係るロボット制御方法を示すフローチャートである。
【図８】（ａ）は第１実施形態においてロボットアームの関節Ｊ６の角度に対する関節Ｊ１の角度の変化を表したグラフである。（ｂ）は第１実施形態においてロボットアームの関節Ｊ６の角度に対する関節Ｊ２の角度の変化を表したグラフである。（ｃ）は第１実施形態においてロボットアームの関節Ｊ６の角度に対する関節Ｊ３の角度の変化を表したグラフである。（ｄ）は第１実施形態においてロボットアームの関節Ｊ６の角度に対する関節Ｊ４の角度の変化を表したグラフである。（ｅ）は第１実施形態においてロボットアームの関節Ｊ６の角度に対する関節Ｊ５の角度の変化を表したグラフである。
【図９】（ａ）は第１実施形態においてロボットアームの先端部の回転角度に対するロボットアームの先端部の突き当て方向の変位の推定値の実験データを示すグラフである。（ｂ）は第１実施形態においてロボットアームの先端部の回転角度に対するロボットアームの先端部の突き当て方向の変位の推定値と実測値とを比較した実験データを示すグラフである。
【図１０】（ａ）は、ロボットアームの先端部の回転角度が０度のときの計測用ワークの位置を示す説明図である。（ｂ）は、ロボットアームの先端部の回転角度が９０度のときの計測用ワークの位置を示す説明図である。（ｃ）は、ロボットアームの先端部の回転角度が１８０度のときの計測用ワークの位置を示す説明図である。（ｄ）は、ロボットアームの先端部の回転角度が２７０度のときの計測用ワークの位置を示す説明図である。
【図１１】第２実施形態に係るロボットアームの先端部及びロボットハンドを示す斜視図である。
【図１２】第３実施形態に係るロボット装置を示す斜視図である。
【図１３】第３実施形態に係るロボット装置の要部構成を示した機能ブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１３】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボット装置を示す斜視図である。ロボット装置１００は、ロボット２００と、ロボット２００の動作を制御する制御装置３００と、ユーザの操作によりロボット２００の動作を教示する教示部としてのティーチングペンダント４００と、を備えている。
【００１４】
ロボット２００は、垂直多関節型のロボットアーム２０１と、ロボットアーム２０１の先端部に取り付けられた、エンドエフェクタとしてのロボットハンド２０２と、を有している。また、ロボット２００は、ロボットアーム２０１とロボットハンド２０２との間に配置され、ロボットハンド２０２に加わる力を検出する力センサである力覚センサ２６０を有している。即ち、ロボットハンド２０２は、力覚センサ２６０を介してロボットアーム２０１の先端部に取り付けられている。
【００１５】
力覚センサ２６０は、ロボットアーム２０１の先端部、即ちロボットハンド２０２における座標系（ツール座標系）Σ１において、互いに直交する３軸方向の力、及び３軸まわりのモーメントをそれぞれ検出する。以下、この力覚センサ２６０が検出する力及びモーメントを、単に「力」という。この力覚センサ２６０は、嵌合作業等の組立作業時に組付けを制御するために、即ちコンプライアンス制御を行うために用いられる。
【００１６】
ロボットアーム２０１は、作業台に固定されるベース部（基端リンク）２１０と、変位や力を伝達する複数のリンク２１１〜２１６とが関節Ｊ１〜Ｊ６で屈曲（旋回）又は回転可能に連結されている。第１実施形態では、ロボットアーム２０１は、屈曲する３軸と回転する３軸の６軸の関節Ｊ１〜Ｊ６で構成されている。ここで、屈曲とは２つのリンクの結合部のある点で折れ曲がること、回転とは２つのリンクの長手方向の回転軸でリンクが相対的に回ることをいい、それぞれを屈曲部、回転部と呼ぶ。ロボットアーム２０１は、６つの関節Ｊ１〜Ｊ６から構成され、関節Ｊ１，Ｊ４，Ｊ６が回転部、関節Ｊ２，Ｊ３，Ｊ５が屈曲部である。
【００１７】
ロボットハンド２０２は、複数のフィンガー（例えば、爪）２２０を有し、ロボットアーム２０１の先端部、即ちリンク（先端リンク）２１６の先端部に力覚センサ２６０を介して取り付けられている。複数のフィンガー２２０は、ハンドベースに対して中心軸を中心とする半径方向内側及び外側に移動するようにハンドベースに支持されている。複数のフィンガー２２０を閉動作（半径方向内側に動作）させることにより、第１ワークであるワークＷ１を把持することができ、複数のフィンガー２２０を開動作（半径方向外側に動作）させることにより、ワークＷ１を把持解放することができる。ロボットハンド２０２は、複数のフィンガー２２０を用いてワークＷ１を把持することにより、第１ワークであるワーク（嵌合部品）Ｗ１を第２ワークであるワーク（被嵌合部品）Ｗ２に嵌合する嵌合作業を行うことができる。
【００１８】
ロボットアーム２０１は、各関節Ｊ１〜Ｊ６に対して設けられ、各関節Ｊ１〜Ｊ６をそれぞれ駆動するための複数（６つ）の関節駆動装置２３０を有している。なお、図１では、関節駆動装置２３０は、便宜上、関節Ｊ２にのみ図示しているが、他の関節Ｊ１，Ｊ３〜Ｊ６において図示を省略しているが、他の関節Ｊ１，Ｊ３〜Ｊ６にも、同様の構成の関節駆動装置２３０が配置されている。
【００１９】
図２は、ロボットアーム２０１の関節Ｊ２を示す部分断面図である。以下、関節Ｊ２を例に代表して説明し、他の関節Ｊ１，Ｊ３〜Ｊ６については、同様の構成であるため、説明を省略する。
【００２０】
関節駆動装置２３０は、電動モータである回転モータ（以下、「モータ」という）２３１と、モータ２３１の回転軸２３２の回転を減速する減速機２３３と、を有している。関節Ｊ２は、モータ２３１の回転軸２３２（減速機２３３の入力軸）の回転角度を検出するモータ角度検出部であるエンコーダ２３５を有する。また、関節Ｊ２は、リンク１２１に対するリンク１２２の角度（減速機２３３の出力軸の回転角度）を検出する関節角度検出部であるエンコーダ２３６を有している。即ち、エンコーダ２３６は、関節Ｊ２の角度（関節角度）を検出する。モータ２３１は、サーボモータであり、例えばブラシレスＤＣサーボモータやＡＣサーボモータである。
【００２１】
エンコーダ２３５は、アブソリュート型のロータリーエンコーダが望ましく、１回転の絶対角度エンコーダ、絶対角度エンコーダの回転総数のカウンタ、及びカウンタに電力を供給するバックアップ電池を有して構成される。ロボットアーム２０１への電源の供給がオフになっても、このバックアップ電池が有効であれば、ロボットアーム２０１への電源供給のオン／オフに関係なく、カウンタにおいて回転総数が保持される。したがって、ロボットアーム２０１の姿勢が制御可能となる。なお、エンコーダ２３５は、回転軸２３２に取り付けられているが、減速機２３３の入力軸に取り付けてもよい。
【００２２】
エンコーダ２３６は、隣り合う２つのリンク間の相対角度を検出するロータリーエンコーダである。関節Ｊ２においては、エンコーダ２３６は、リンク２１１とリンク２１２との間の相対角度を検出するロータリーエンコーダである。エンコーダ２３６は、リンク２１１にエンコーダスケールを設け、リンク２１２に検出ヘッドを設けた構成、或いは逆の構成となる。
【００２３】
また、リンク２１１とリンク２１２とは、クロスローラベアリング２３７を介して回転自在に結合されている。モータ２３１は、モータカバー２３８で覆われて保護されている。モータ２３１とエンコーダ２３５との間には、不図示のブレーキユニットが設けられている。ブレーキユニットの主な機能は、電源オフ時のロボットアーム２０１の姿勢の保持である。
【００２４】
減速機２３３は、第１実施形態では、小型軽量で減速比の大きい波動歯車減速機である。減速機２３３は、モータ２３１の回転軸２３２に結合された、入力軸であるウェブジェネレータ２４１と、リンク２１２に固定された、出力軸であるサーキュラスプライン２４２と、を備えている。なお、サーキュラスプライン２４２は、リンク２１２に直結されているが、リンク２１２に一体に形成されていてもよい。
【００２５】
また、減速機２３３は、ウェブジェネレータ２４１とサーキュラスプライン２４２との間に配置され、リンク２１１に固定されたフレクスプライン２４３を備えている。フレクスプライン２４３は、ウェブジェネレータ２４１の回転に対して減速比Ｎで減速され、サーキュラスプライン２４２に対して相対的に回転する。従って、モータ２３１の回転軸２３２の回転は、減速機２３３で１／Ｎの減速比で減速されて、フレクスプライン２４３が固定されたリンク２１１に対してサーキュラスプライン２４２が固定されたリンク２１２を相対的に回転運動させ、関節Ｊ２を屈曲させる。
【００２６】
図３は、ロボット装置１００の制御装置３００の構成を示すブロック図である。制御装置３００は、メイン制御部３３０と、複数（関節の数に対応した数：第１実施形態では６つ）の関節制御部３４０と、を有する。
【００２７】
メイン制御部３３０は、コンピュータで構成されており、演算部としてのＣＰＵ（Central  Processing  Unit）３０１を備えている。また、メイン制御部３３０は、記憶部として、ＲＯＭ（Read  Only  Memory）３０２、ＲＡＭ（Random  Access  Memory）３０３、ＨＤＤ（Hard  Disk  Drive）３０４を備えている。また、メイン制御部３３０は、記録ディスクドライブ３０５、各種のインタフェース３１１〜３１３及び応力算出器３４３を備えている。
【００２８】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５、各種のインタフェース３１１〜３１３及び応力算出器３４３が、バスを介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００２９】
ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１に、後述する演算処理を実行させるためのプログラム３２０を記録するものである。ＣＰＵ３０１は、ＨＤＤ３０４に記録（格納）されたプログラム３２０に基づいてロボット制御方法の各工程を実行する。
【００３０】
記録ディスクドライブ３０５は、記録ディスク３２１に記録された各種データやプログラム等を読み出すことができる。なお、メイン制御部３３０には、書き換え可能な不揮発性メモリや外付けＨＤＤ等の不図示の外部記憶装置が接続されていてもよい。
【００３１】
教示部であるティーチングペンダント４００は、インタフェース３１１に接続されている。ティーチングペンダント４００は、ユーザの入力操作により、ロボット２００を教示する教示点、即ち各関節Ｊ１〜Ｊ６の目標関節角度（各関節Ｊ１〜Ｊ６のモータ２３１の目標回転位置）を指定するものである。教示点のデータは、インタフェース３１１及びバスを通じてＨＤＤ３０４に出力される。
【００３２】
ＨＤＤ３０４は、ティーチングペンダント４００により指定された教示点のデータを格納することができる。ＣＰＵ３０１は、ＨＤＤ３０４に設定（格納）された教示点のデータを読み出すことができる。
【００３３】
表示部である表示装置（モニタ）５００は、インタフェース３１２に接続されており、ＣＰＵ３０１の制御の下、画像を表示する。
【００３４】
応力算出器３４３には、力覚センサ２６０が接続されている。応力算出器３４３は、力覚センサ２６０からの信号から力（３軸の力及び３軸のモーメント）を求めて、求めた力を示す信号をＣＰＵ３０１に出力する。
【００３５】
インタフェース３１３には、関節制御部３４０が接続されている。なお、第１実施形態では、ロボットアーム２０１が６つの関節Ｊ１〜Ｊ６を有しているので、制御装置３００は、６つの関節制御部３４０を有するが、図３では、関節制御部３４０が１つだけ図示し、残りの５つは図示を省略している。各関節制御部３４０は、制御装置３００の筐体内に配置されている。なお、各関節制御部３４０の配置位置は、筐体内に限定するものではなく、例えばロボットアーム２０１に配置されていてもよい。
【００３６】
ＣＰＵ３０１は、予め設定された教示点に基づき、ロボットアーム２０１の軌道を計算し、モータ２３１の回転軸２３２の目標回転位置（回転角度の制御量）を示す位置指令の信号を所定時間間隔で各関節制御部３４０に出力する。
【００３７】
関節制御部３４０は、ＣＰＵ３５１、記憶部としてのＥＥＰＲＯＭ３５２及びＲＡＭ３５３、インタフェース３６１、検出回路３６２，３６３並びにモータ駆動回路３６５を備えており、これらがバスを介して接続されて構成されている。
【００３８】
ＣＰＵ３５１は、プログラム３７０に従って演算処理を実行する。ＥＥＰＲＯＭ３５２は、プログラム３７０を記憶する記憶装置である。ＲＡＭ３５３は、ＣＰＵ３５１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００３９】
メイン制御部３３０は、複数（６つ）のインタフェース３１３（図３では１つのみ図示）を有している。各インタフェース３１３と各関節制御部３４０のインタフェース３６１とがケーブル等で接続されており、メイン制御部３３０と各関節制御部３４０との間で信号の送受信を行うことができる。
【００４０】
エンコーダ２３５は、検出回路３６２に接続され、エンコーダ２３６は、検出回路３６３に接続されている。エンコーダ２３５，２３６からは、検出した角度検出値を示すパルス信号が出力される。
【００４１】
検出回路３６２，３６３は、エンコーダ２３５，２３６からパルス信号を取得し、ＣＰＵ３５１にて取得可能な信号に変換してＣＰＵ３５１に出力する。
【００４２】
モータ駆動回路３６５は、例えば半導体スイッチング素子を有するモータドライバであり、入力した電流指令に応じて、パルス幅変調された３相交流のＰＷＭ波形の電圧をモータ２３１に出力することで、モータ２３１に電流を供給する。
【００４３】
各関節制御部３４０のＣＰＵ３５１は、メイン制御部３３０のＣＰＵ３０１から入力を受けた位置指令にモータ２３１の回転位置（回転角度）が近づくようにモータ２３１への電流の出力量（電流指令）を演算し、電流指令をモータ駆動回路３６５に出力する。
【００４４】
モータ駆動回路３６５は、入力を受けた電流指令に対応する電流をモータ２３１に供給する。そして、モータ２３１は、モータ駆動回路２６５から電力供給を受けて駆動トルクを発生し、減速機２３３の入力軸であるウェブジェネレータ２４１にトルクを伝達する。減速機２３３において、出力軸であるサーキュラスプライン２４２は、ウェブジェネレータ２４１の回転に対して１／Ｎの回転数で回転する。これにより、リンク２１２がリンク２１１に対して相対的に回転する。
【００４５】
このように、各関節制御部３４０は、モータ２３１の回転位置がメイン制御部３３０から入力を受けた位置指令に近づくようにモータ２３１に電流を供給して各関節Ｊ１〜Ｊ６の関節角度を制御する。
【００４６】
なお、第１実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４，ＥＥＰＲＯＭ３５２であり、ＨＤＤ３０４，ＥＥＰＲＯＭ３５２にプログラム３２０，３７０が格納される場合について説明するが、これに限定するものではない。プログラム３２０，３７０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム３２０，３７０を供給するための記録媒体としては、図３に示す記録ディスク３２１、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性メモリ、ＲＯＭ等を用いることができる。
【００４７】
図４は、本発明の第１実施形態に係るロボット装置の要部構成を示した機能ブロック図である。図４においては、プログラム３２０に基づくＣＰＵ３０１の機能をブロック化して図示し、プログラム３７０に基づくＣＰＵ３５１の機能及びモータ駆動回路３６５の機能をブロック化して図示している。ロボット２００においては、ロボットアーム２０１の関節Ｊ１をブロック化して図示している。
【００４８】
制御装置３００は、メイン制御部３３０及び各関節Ｊ１〜Ｊ６に対応する関節制御部３４０を有している。図４では、関節Ｊ１と関節Ｊ１に対応する関節制御部３４０のみ図示しており、図示は省略しているが、制御装置３００は、他の関節Ｊ２〜Ｊ６それぞれに対応する関節制御部３４０を複数有している。
【００４９】
メイン制御部３３０は、軌道計算部３３１、押し付け制御部３３２、ワーク位置ずれ計算部３３４、先端位置算出部３３５、リンクパラメータ記憶部３３６、補正量算出部３３７からなる。各関節制御部３４０は、モータ制御部３４１、出力軸角度算出部３４２からなる。
【００５０】
メイン制御部３３０のＣＰＵ３０１は、プログラム３２０により軌道計算部３３１、押し付け制御部３３２、ワーク位置ずれ計算部３３４、先端位置算出部３３５、補正量算出部３３７として機能する。リンクパラメータ記憶部３３６は、例えばＨＤＤ３０４である。
【００５１】
また、各関節制御部３４０のモータ制御部３４１は、プログラム３７０により動作するＣＰＵ３５１及びモータ駆動回路３６５の機能である。出力軸角度算出部３４２は、プログラム３７０により動作するＣＰＵ３５１の機能である。
【００５２】
まず、メイン制御部３３０の制御動作について説明する。
【００５３】
軌道計算部３３１は、教示点のデータに基づいて、ロボットアーム２０１の動作（軌道）を計算する。教示点は、関節空間又はタスク空間上の点として、作業者が操作するティーチングペンダント４００により設定される。
【００５４】
ロボットアーム２０１の自由度を表すパラメータを関節角度として、ロボットアーム２０１の関節Ｊ１〜Ｊ６の関節角度をそれぞれθ１〜θ６とする。ロボットアーム２０１のコンフィグレーションは（θ１，θ２，θ３，θ４，θ５，θ６）で表され、関節空間上では、１つの点とみなすことができる。このように、ロボットアーム２０１の自由度を表すパラメータ（例えば、関節角度や伸縮長さ）を座標軸の値とした場合、ロボットアーム２０１のコンフィグレーションは関節空間上の点として表現することができる。つまり、関節空間は、ロボットアーム２０１の関節角度を座標軸とする空間である。
【００５５】
また、ロボットハンド２０２には、ツールセンターポイント（ＴＣＰ）が設定されている。ＴＣＰは、ベース座標系Σ２において位置を表す３つのパラメータ（ｘ，ｙ，ｚ）と、姿勢（回転）を表す３つのパラメータ（α，β，γ）、即ち６つのパラメータ（ｘ，ｙ，ｚ，α，β，γ）で表され、タスク空間上では、１つの点としてみなすことができる。つまり、タスク空間は、これら６つの座標軸で規定された空間である。
【００５６】
軌道計算部３３１は、設定された複数の教示点を繋ぐロボットアーム２０１の経路を所定の補間方法（例えば、直線補間や円弧補間、関節補間等）で生成する。そして、軌道計算部３３１は、生成したロボットアーム２０１の経路から、ロボットアーム２０１の軌道を生成する。
【００５７】
ここで、ロボットアーム２０１の経路とは、関節空間又はタスク空間の点の順序集合である。ロボットアーム２０１の軌道とは、時間をパラメータとして経路を表したものであり、第１実施形態では、時刻毎の各関節Ｊ１〜Ｊ６のモータ２３１の位置指令の集合である。
【００５８】
軌道データは、ロボットアーム２０１を動作させる前に予め計算して記憶部、例えばＨＤＤ３０４に記憶（設定）させておく。
【００５９】
なお、軌道データの計算は、メイン制御部３３０のＣＰＵ３０１が行う場合について説明するが、不図示の他のコンピュータに行わせ、メイン制御部３３０の記憶部、例えばＨＤＤ３０４に予め記憶（設定）してもよい。
【００６０】
押し付け制御部３３２は、力覚センサ２６０により検出された力検出結果を、応力算出器３４３を介して取得し、力を一定に保つようにコンプライアンス制御処理を行う。コンプライアンス制御を行いながら軌道計算部３３１による計算結果を用いて、ロボットハンド２０２で把持した、対称形状部材である計測用ワークＷ３（後述）を、基準部材である基準治具Ｗ４（後述）に一定力で押し付け（突き当て）る。
【００６１】
リンクパラメータ記憶部３３６には、予めロボットアーム２０１のリンクパラメータが記憶（設定）されている。ロボットアーム２０１のリンクパラメータは、ロボットアーム２０１を構成する各リンク２１０〜２１６の長さや各関節Ｊ１〜Ｊ６の位置関係を示したパラメータである。
【００６２】
先端位置算出部３３５は、各関節Ｊ１〜Ｊ６（図４では関節Ｊ１）の駆動を制御する関節制御部３４０の出力軸角度算出部３４２から、エンコーダ２３６により検出された関節角度のデータを取得する。また、先端位置算出部３３５は、リンクパラメータ記憶部３３６に記憶されているロボットアーム２０１のリンクパラメータを読み出す。
【００６３】
そして、先端位置算出部３３５は、これら入力したデータ（情報）から、ロボットアーム２０１の順運動学により演算して、ロボットアーム２０１の先端部（リンク２１６の先端部）の位置（先端位置）を算出する。
【００６４】
ワーク位置ずれ計算部３３４は、ロボットハンド２０２を回転させたとき計測用ワークＷ３の中心軸の位置ずれ、即ち、実際に組み付けるワークを把持する場合の複数のフィンガー２２０の中心軸の位置ずれを算出する。
【００６５】
補正量算出部３３７は、ワーク位置ずれ計算部３３４からの位置ずれ（偏心）のデータから、実際の動作時の軌道データの補正量を算出する。
【００６６】
実際の組み付け作業時には、軌道計算部３３１からの位置指令（軌道データ）に、補正量算出部３３７で算出した補正量を足し合わせた値を、新たな位置指令として、各モータ２３１の位置制御を行う各関節制御部３４０のモータ制御部３４１に出力する。
【００６７】
次に、各関節制御部３４０について説明する。モータ制御部３４１は、軌道計算部３３１からの位置指令と補正量算出部３３７の補正量とを足し合わせた値の位置指令を入力する。軌道計算部３３１からの位置指令とは、上述したように、教示点に基づき算出した位置指令である。モータ制御部３４１は、入力した位置指令とエンコーダ２３５の値とを参照して、モータ２３１の回転位置が位置指令に近づくようにモータ２３１の位置制御（フィードバック制御）を行う。出力軸角度算出部３４２は、エンコーダ２３６の角度検出結果を示す値から、関節角度の値を算出する。
【００６８】
次に、ロボットアーム２０１の動作を校正する場合、即ちロボットハンド２０２の位置を校正する場合について説明する。図５は、本発明の第１実施形態に係るロボット装置のロボットを示す斜視図である。ロボットアーム２０１が固定された作業台には、基準部材である基準治具Ｗ４が取外し可能に固定されている。即ち、基準治具Ｗ４は、ロボットアーム２０１に対して相対的に移動しないように作業台に固定されている。校正するための計測時には、ロボットハンド２０２に計測用ワークＷ３を把持させる。
【００６９】
計測用ワークＷ３は、中心軸Ｂに対して回転対称な形状の対称形状部材である。計測用ワークＷ３は、第１実施形態では断面における真円度が高精度に加工された円筒形状（円柱形状）をしている。
【００７０】
ロボットアーム２０１のリンク２１６は、リンク２１５に対して、先端軸Ａのまわりに回転する。つまり、先端軸Ａは、リンク２１６の回転中心軸である。第１実施形態では、先端軸Ａに対する中心軸Ｂの傾きは、許容値以下であるものとする。
【００７１】
基準治具Ｗ４は平面（基準面）Ｆ４を有する。基準治具Ｗ４の平面Ｆ４は、高精度に加工された精度面としている。高精度に加工された計測用ワークＷ３の外周面Ｆ３を基準治具Ｗ４の平面Ｆ４に一定の力で突き当てることにより、ロボットハンド２０２に把持させた計測用ワークＷ３の中心軸Ｂ（即ち、ロボットハンド２０２の中心軸）を高精度に測定することができる。
【００７２】
次に、制御装置３００によりロボット２００の動作を制御するロボット制御方法、即ちロボットハンド２０２の位置の校正方法について説明する。図６は、本発明の第１実施形態に係るロボット制御方法を示すフローチャートである。第１実施形態では、ロボット２００による補正動作は、計測用ワークＷ３を基準治具Ｗ４に押し付ける調芯作業である。
【００７３】
まず、ＣＰＵ３０１は、ロボットアーム２０１の制御を調芯モードにする（Ｓ１）。調芯モードは、ロボットハンド２０２を交換したときに最初に行う補正作業である。つまり、ロボットハンド２０２をロボットアーム２０１に取り付けた際には、ロボットアーム２０１の先端軸Ａに対してロボットハンド２０２の中心軸（つまり、ワークの中心軸）Ｂがずれることがあり、校正が必要である。したがって、第１実施形態では、ロボットハンド２０２をロボットアーム２０１に取り付けた直後は、調芯モードにてロボット２００の位置の校正を行う。具体的には、軌道データを補正してロボットハンド２０２の位置を校正する。
【００７４】
ＣＰＵ３０１は、ロボットハンド２０２に計測用ワークＷ３を把持させるようロボットアーム２０１及びロボットハンド２０２の動作を制御する（Ｓ２：把持工程）。
【００７５】
次に、ＣＰＵ３０１は、計測用ワークＷ３を把持したロボットハンド２０２が、基準治具Ｗ４の位置（計測用ワーク押付位置、換言すれば調芯位置）に移動するようロボットアーム２０１の動作を制御する（Ｓ３）。
【００７６】
次に、ＣＰＵ３０１は、計測用ワークＷ３の外周面Ｆ３を基準治具Ｗ４の平面Ｆ４に一定の力で突き当てるようにロボットアーム２０１の動作を制御する（Ｓ４）。この場合、ＣＰＵ３０１は、力覚センサ２６０の検出情報により計測用ワークＷ３を一定力で押し付けるように制御する。このとき、力覚センサ２６０は、ロボットハンド２０２に作用する力を検出するので、ＣＰＵ３０１は、計測用ワークＷ３を基準治具Ｗ４に突き当てる力として、力覚センサ２６０の力の検出結果を取得する。
【００７７】
次に、ＣＰＵ３０１は、計測用ワークＷ３を基準治具Ｗ４に突き当てた状態で関節Ｊ６を回転させる（Ｓ５：動作工程）。即ち、ＣＰＵ３０１は、ロボットハンド２０２に把持させた計測用ワークＷ３の外周面Ｆ３を基準治具Ｗ４の平面Ｆ４に突き当てた状態でロボットアーム２０１のリンク２１６を先端軸Ａまわりに回転させる。このとき、ＣＰＵ３０１は、計測用ワークＷ３の外周面Ａ３を基準治具Ｗ４に突き当てる一定の力を維持するようにロボットアーム２０１の各関節Ｊ１〜Ｊ５の動作を制御する（Ｓ６：動作工程）。
【００７８】
更に、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６のエンコーダ２３６の値（各エンコーダ２３６にて検出された関節角度）を取得する（Ｓ７：取得工程）。
【００７９】
次に、ＣＰＵ３０１は、関節Ｊ６（リンク２１６）が１回転したか否かを判断する（Ｓ８：判断工程）。この判断は、関節Ｊ６のエンコーダ２３６により検出された関節角度により行う。
【００８０】
ＣＰＵ３０１は、ステップＳ８にて、リンク２１６（計測用ワークＷ３）が１回転するまで、ステップＳ５〜Ｓ７の処理を続ける。
【００８１】
ＣＰＵ３０１は、ステップＳ８にて、ロボットハンド２０２が回転終了位置に到達したと判断した場合には（Ｓ８：Ｙｅｓ）、ロボットアーム２０１の動作を停止させる。
【００８２】
次に、ＣＰＵ３０１は、リンク２１６の先端軸Ａに対する計測用ワークＷ３の中心軸Ｂの偏心情報を計算する（Ｓ９）。ここで、偏心情報（軸ずれ情報）とは、先端軸Ａに対する中心軸Ｂの偏心方向（軸ずれ方向）、及び先端軸Ａに対する中心軸Ｂの偏心量（軸ずれ量）である。
【００８３】
ＣＰＵ３０１は、先端軸Ａに対する中心軸Ｂの偏心に基づく軌道データに対する補正量を算出し、算出した補正量を記憶部（例えば、ＨＤＤ３０４）に記録する（Ｓ１０）。具体的には、補正前の軌道データに基づくロボットアーム２０１の先端部の位置（先端位置）が、偏心方向と逆方向に偏心量と同じ量だけ移動するような軌道データ（各モータ２３１の位置指令）の補正量を算出する。これにより補正データの作成動作が終了する。
【００８４】
次に、生産ラインにてロボットアーム２０１を動作させる場合について説明する。図７は、本発明の第１実施形態に係るロボット制御方法を示すフローチャートである。
【００８５】
ＣＰＵ３０１は、生産工程にて、軌道データに従ってロボットアーム２０１を動作させる際に、ＨＤＤ３０４等の記憶部に記憶された軌道データ（各モータ２３１の位置指令）及びその補正量を読み出す（Ｓ１１）。そして、ＣＰＵ３０１は、軌道データに補正量を加算する補正を行う（Ｓ１２）。以上、ステップＳ９〜Ｓ１２の処理で軌道データが補正される（補正工程）。
【００８６】
ＣＰＵ３０１は、補正後の軌道データ（各モータ２３１の位置指令）を各関節制御部３４０に出力することで、ロボットアーム２０１を補正した軌道データに従って動作させる制御を行う（Ｓ１３）。
【００８７】
第１実施形態では、作業を行う際のロボットアーム２０１の軌道データを補正しているので、ロボットハンド２０２について煩雑な調整作業を行う必要がない。また、ロボットアーム２０１の各関節の角度から、先端軸Ａに対する中心軸Ｂの偏心に基づく補正量を算出し、補正量で軌道データを補正しているので、微小変位計等の特別な測定器を用いなくても、ロボットハンド２０２の位置が校正される。
【００８８】
また、第１実施形態では、ロボットハンド２０２に作用する力、即ち計測用ワークＷ３を基準治具Ｗ４に突き当てる力を、力覚センサ２６０により検出している。そして、微小な力の変化を検出してロボットハンド２０２の位置ずれを計測するのではなく、検出される力が一定となるようにロボットアーム２０１を制御して各関節の関節角度からロボットアーム２０１の先端位置のずれを計測している。
【００８９】
力覚センサ２６０の検出精度と剛性とはトレードオフの関係にあり、第１実施形態では、力覚センサ２６０の検出精度は、一定力を検出するものであって、微小な力の検出はしなくてもよい。そして、エンコーダ２３６の分解能を高くしてもロボットアーム２０１の剛性が低下することはない。したがって、力覚センサ２６０の剛性を高くしても、ロボットアーム２０１の先端位置を高精度に計測することができる。よって、第１実施形態では、軌道データを補正することによりロボットハンド２０２の位置が高精度に校正される。
【００９０】
なお、ロボットアーム２０１を動作させる際に、逐次軌道データを補正する場合について説明したが、これに限定するものではない。軌道データを補正量で補正した補正後の軌道データをＨＤＤ３０４等の記憶部に記憶させておいてもよい。したがって、ロボットアーム２０１を動作させる際には、ＣＰＵ３０１は、ＨＤＤ３０４等の記憶部に記憶された補正後の軌道データを読み出すだけで、補正演算を逐次行わなくてもよくなる。
【００９１】
ここで、ロボットアーム２０１の先端軸Ａに対するロボットハンド２０２が把持した計測用ワークＷ３の中心軸Ｂの偏心の算出方法について具体的に説明する。
【００９２】
図８は、ロボットアーム２０１の先端部（関節Ｊ６）の回転角度に対する各関節Ｊ１〜Ｊ５の関節角度の変化を表したグラフである。具体的には、図８（ａ）は、関節Ｊ６の角度に対する関節Ｊ１の角度の変化を表したグラフである。図８（ｂ）は、関節Ｊ６の角度に対する関節Ｊ２の角度の変化を表したグラフである。図８（ｃ）は、関節Ｊ６の角度に対する関節Ｊ３の角度の変化を表したグラフである。図８（ｄ）は、関節Ｊ６の角度に対する関節Ｊ４の角度の変化を表したグラフである。図８（ｅ）は、関節Ｊ６の角度に対する関節Ｊ５の角度の変化を表したグラフである。図８（ａ）〜図８（ｅ）に示すグラフは、エンコーダ２３６の値より算出した出力軸角度算出部３４２の関節Ｊ６の出力軸角度を横軸とし、縦軸を各関節Ｊ１〜Ｊ５の出力角度値として表している。
【００９３】
図９（ａ）は、関節Ｊ６の回転角度に対するロボットアーム２０１の先端（リンク２１６）の突き当て方向の変位の推定値の実験データを示すグラフである。図９（ｂ）は、関節Ｊ６の回転角度に対するロボットアーム２０１の先端（リンク２１６）の突き当て方向の変位の推定値と実測値とを比較した実験データを示すグラフである。図９（ｂ）に示す推定値と実測値の比較において実際の変位に対して各関節Ｊ１〜Ｊ６の出力角度値により推定できていることがわかる。
【００９４】
ＣＰＵ３０１は、ロボットアーム２０１の関節Ｊ１〜Ｊ６の関節角度とリンクパラメータを用いて順運動学を解くことにより、ロボットアーム２０１の先端の位置を算出する。ステップＳ５〜Ｓ７にて一定力で計測用ワークＷ３を基準治具Ｗ４に突き当てた状態で関節Ｊ６（リンク２１６）を回転させたときの突き当て方向の変位は、関節Ｊ６の回転に対して図９（ａ）及び図９（ｂ）に示すような関係を示している。
【００９５】
ここで、先端軸Ａは、関節Ｊ６（リンク２１６）の回転中心軸、中心軸Ｂは、計測用ワークＷ３の中心軸（ハンド中心軸）である。先端軸Ａに対する中心軸Ｂの偏心量をΔ（ｚ）、計測用ワークＷ３の半径をＲとする。
【００９６】
図１０は、計測用ワークＷ３を基準治具Ｗ４に一定力で突き当てた状態における関節Ｊ６の回転角度に対する計測用ワークＷ３の位置を示す説明図である。具体的に説明すると、図１０（ａ）は、関節Ｊ６の回転角度が０度のときの計測用ワークＷ３の位置を示す説明図である。図１０（ｂ）は、関節Ｊ６の回転角度が９０度のときの計測用ワークＷ３の位置を示す説明図である。図１０（ｃ）は、関節Ｊ６の回転角度が１８０度のときの計測用ワークＷ３の位置を示す説明図である。図１０（ｄ）は、関節Ｊ６の回転角度が２７０度のときの計測用ワークＷ３の位置を示す説明図である。
【００９７】
図１０（ａ）〜図１０（ｄ）において、関節Ｊ６の回転方向は、先端軸Ａを中心に反時計回りとする。関節Ｊ６の回転角度が０度のとき、先端軸Ａの基準面Ｆ４からのＺ方向（突き当て方向）の距離はＲである（図１０（ａ））。関節Ｊ６の回転角度が９０度のとき、先端軸Ａの基準面Ｆ４からのＺ方向の距離は、Ｒに対して偏心量Δ（ｚ）増加する（図１０（ｂ））。関節Ｊ６の回転角度が１８０度のとき、先端軸Ａの基準面Ｆ４からのＺ方向の距離はＲとなる（図１０（ｃ））。関節Ｊ６の回転角度が２７０度のとき、先端軸Ａの基準面Ｆ４からのＺ方向の距離は、Ｒに対して偏心量Δ（ｚ）減少する（図１０（ｄ））。
【００９８】
よって、図９（ａ）に示すように、関節Ｊ６の回転中心軸である先端軸Ａに対してワークＷ３の中心軸Ｂが偏心量Δ（ｚ）で偏心している場合は、１回転中に略正弦波カーブを示し、上限ピークと下限ピークとの半分（振幅）が偏心量Δ（ｚ）を示す。また、編心量Δ（ｚ）と関節Ｊ６の回転角度により中心軸の偏心方向が算出される。具体的には図１０（ｂ）に示すように関節Ｊ６の回転角度が９０度のとき、先端軸Ａの基準面Ｆ４からのＺ方向が偏心方向と算出される。
【００９９】
このように、先端位置算出部３３５の値をワーク位置ずれ計算部３３４で計算することにより関節Ｊ６の回転中心軸である先端軸Ａに対するワーク把持の中心軸Ｂの偏心量及び偏心方向からなる偏心情報を高精度に求めることができる。
【０１００】
［第２実施形態］
次に、本発明の第２実施形態に係るロボット装置によるロボット制御方法について説明する。図１１は、本発明の第２実施形態に係るロボットアーム２０１の先端部及びロボットハンド２０２を示す斜視図である。
【０１０１】
第１実施形態では、ロボットアーム２０１の先端軸Ａに対して計測用ワークＷ３の中心軸Ｂの傾きが許容値以下の場合について説明したが、傾きが許容値を超えることもある。第２実施形態では、傾きも校正する場合について説明する。なお、ロボット装置の構成は、第１実施形態のロボット装置１００と同様であるので、説明を省略する。
【０１０２】
図１１に示すように、計測用ワークＷ３の先端軸Ａに対してワークの中心軸（ロボットハンドの中心軸）Ｂが傾くことがある。例えば、ロボットアーム２０１（力覚センサ２６０）に対してロボットハンド２０２が傾いている場合、複数のフィンガー２２０の位置のばらつきにより把持するワークが傾く場合等である。
【０１０３】
第２実施形態では、その傾きを補正するために、Ｐ点（第１箇所：第２実施形態では計測用ワークＷ３の外周面Ｆ３における先端位置）の測定を行い、ずれ量ΔＰの算出を行う。次に、先端軸Ａの方向で点Ｐとは異なる点Ｑ（第２箇所）の測定を行い、ずれ量ΔＱの算出を行う。先端軸Ａの方向の点Ｐと点Ｑとの距離をＬとする。それぞれ、ずれ量ΔＰ、ずれ量ΔＱを計算することにより、傾きθＢが求められる。この、傾きθＢとずれ量ΔＰの計算をもとに位置ずれ補正を行う。
【０１０４】
具体的に説明すると、ＣＰＵ３０１は、ステップＳ５〜Ｓ７（図６参照）を、ワークＷ３の外周面Ｆ３における点Ｐを基準治具Ｗ４に突き当てた場合、及びワークＷ３の外周面Ｆ３における点Ｑを基準治具Ｗ４に突き当てた場合についてそれぞれ行う。第２実施形態では、点Ｐは、計測用ワークＷ３の外周面Ｆ３の先端部であり、点Ｑは、計測用ワークＷ３の外周面Ｆ３の中間部である。点ＱはワークＷ３を点ＰからＪ６軸方向に距離Ｌだけロボットアーム２０１の先端を移動させることにより基準治具Ｗ４に突き当てを行う。
【０１０５】
ＣＰＵ３０１は、ステップＳ９において、ステップＳ７にて取得した結果を用いて、先端軸Ａに対する中心軸Ｂの偏心情報と、先端軸Ａに対する中心軸Ｂの傾き情報とを計算する。そして、ＣＰＵ３０１は、ステップＳ１０において、偏心情報（偏心方向及び偏心量）及び傾き情報（傾き角度）から、軌道データを補正する補正量を計算する。即ち、軌道データに基づくロボットアーム２０１の先端部の位置に対し、偏心方向と逆方向に偏心量と同じ量、ロボットアーム２０１の先端部が移動し、傾き角度と逆方向に同じ角度、ロボットアーム２０１の先端部が移動するよう、補正量を計算する。
【０１０６】
詳述すると、ＣＰＵ３０１は、点Ｐを基準治具Ｗ４に突き当てた場合にステップＳ９にて取得した検出結果、及び点Ｑを基準治具Ｗ４に突き当てた場合にステップＳ９にて取得した検出結果から、ずれ量ΔＰ，ΔＱをそれぞれ求める。このとき、点Ｐ，Ｑそれぞれを基準治具Ｗ４に突き当てた場合の先端軸Ａに対する中心軸Ｂのずれ量ΔＰ，ΔＱを、ロボットアーム２０１のリンク２１６を同じ回転角度とした条件でそれぞれ求める。ずれ量ΔＰ，ΔＱおよび編心方向は第１実施形態と同様に算出される。
【０１０７】
ＣＰＵ３０１は、これら２つのずれ量ΔＰ，ΔＱ及び距離Ｌから、傾き情報（傾き角度θ）を求める。傾き情報は三角形の比例となり下記式であらわされる。
【０１０８】
【数１】
0006504864.tif 000002
【０１０９】
以上、第２実施形態によれば、特別な測定器が不要で、ロボットハンド２０２の位置（具体的にはフィンガー２２０の位置）を調整することなく、ロボットアーム２０１の動作、即ちロボットハンド２０２の位置を高精度に校正することができる。更に、第２実施形態によれば、先端軸Ａに対する中心軸Ｂの偏心および傾きが補正されるので、ロボットハンド２０２の位置をより高精度に校正することができる。
【０１１０】
［第３実施形態］
次に、本発明の第３実施形態に係るロボット装置におけるロボット制御方法について説明する。図１２は、本発明の第３実施形態に係るロボット装置を示す斜視図であり、図１３は、本発明の第３実施形態に係るロボット装置の要部構成を示した機能ブロック図である。図１２及び図１３において第１、第２実施形態と同一構成については、同一符号を付して説明を省略し、異なる点について説明する。
【０１１１】
第３実施形態では、一定力で押し付ける工程において、力覚センサを用いず、各関節の出力側のエンコーダ２３６により検出された角度情報から各関節のトルクを算出して一定力で押し付けるところが第１、第２実施形態と異なる。
【０１１２】
即ち、ロボット装置１００Ａは、ロボットアーム２０１及びロボットハンド２０２を有するロボット２００Ａと、制御装置３００Ａと、ティーチングペンダント４００と、を備えている。ロボット２００Ａは、上記第１実施形態とは違い、力覚センサを有していない。ロボットハンド２０２は、ロボットアーム２０１の先端部に、力覚センサを設けずに直接取り付けられている。
【０１１３】
第３実施形態の制御装置３００Ａは、図３の制御装置３００において応力算出器３４３を省略したものであり、その他の構成は略同一である。そして、第３実施形態において、メイン制御部３３０Ａのプログラム３２０及び各関節制御部３４０Ａのプログラム３７０が第１、第２実施形態と異なるものである。
【０１１４】
図１３において、制御装置３００Ａについては、プログラム３２０に基づくＣＰＵ３０１の機能をブロック化して図示し、プログラム３７０に基づくＣＰＵ３５１の機能及びモータ駆動回路３６５の機能をブロック化して図示している。ロボット２００Ａについては、ロボットアーム２０１の関節Ｊ１をブロック化して図示している。
【０１１５】
制御装置３００Ａは、メイン制御部３３０Ａ及び各関節Ｊ１〜Ｊ６に対応する関節制御部３４０Ａを有している。図１３では、関節Ｊ１と関節Ｊ１に対応する関節制御部３４０Ａのみ図示しており、図示は省略しているが、制御装置３００Ａは、他の関節Ｊ２〜Ｊ６それぞれに対応する関節制御部３４０Ａを複数有している。
【０１１６】
メイン制御部３３０Ａは、軌道計算部３３１、押し付け制御部３３２、ワーク位置ずれ計算部３３４、先端位置算出部３３５、リンクパラメータ記憶部３３６、補正量算出部３３７、及び力算出部３５３からなる。各関節制御部３４０Ａは、モータ制御部３４１、出力軸角度算出部３４２、トルク算出部３５１及び減速機定数記憶部３５２からなる。
【０１１７】
メイン制御部３３０ＡのＣＰＵ３０１は、プログラム３２０により軌道計算部３３１、押し付け制御部３３２、ワーク位置ずれ計算部３３４、先端位置算出部３３５、補正量算出部３３７及び力算出部３５３として機能する。リンクパラメータ記憶部３３６は、例えばＨＤＤ３０４である。
【０１１８】
また、各関節制御部３４０Ａのモータ制御部３４１は、プログラム３７０により動作するＣＰＵ３５１及びモータ駆動回路３６５の機能である。出力軸角度算出部３４２及びトルク算出部３５１は、プログラム３７０により動作するＣＰＵ３５１の機能である。減速機定数記憶部３５２は、例えばＥＥＰＲＯＭ３５２である。
【０１１９】
上記第１実施形態との違いは、力算出部３５３への入力として力覚センサを用いずに、エンコーダ２３６の値をもとに各関節トルクを算出するトルク算出部３５１を設けたことである。
【０１２０】
各関節制御部３４０Ａのトルク算出部３５１及びメイン制御部３３０Ａの力算出部３５３は、エンコーダ２３５の角度検出結果及びエンコーダ２３６の角度検出結果を用いて、計測用ワークＷ３を基準治具Ｗ４に突き当てる力を求める。
【０１２１】
このとき、各関節制御部３４０Ａは、各エンコーダ２３５の角度検出結果及び各エンコーダ２３６の角度検出結果を用いて、各関節Ｊ１〜Ｊ６に作用するトルクを算出する。力算出部３５３は、各関節Ｊ１〜Ｊ６のトルクの算出結果を用いて、計測用ワークＷ３を基準治具Ｗ４に突き当てる力を求める。
【０１２２】
具体的に説明すると、各関節制御部３４０Ａのトルク算出部３５１は、まず、エンコーダ２３５により検出された角度検出結果を減速機２３３の減速比で関節の角度に換算する。具体的には、エンコーダ２３５の角度検出結果に減速比Ｎ（例えば５０）を除算する。減速機２３３の減速比Ｎは、予めＥＥＰＲＯＭ３５２に記憶（設定）されている。
【０１２３】
次に、トルク算出部３５１は、角度換算した角度情報と、エンコーダ２３６からの角度情報の差分に対して、減速機定数記憶部３５２に予め記憶（設定）されている減速機２３３のねじり剛性（回転方向に対するばね定数）を乗算する。これにより、トルク算出部３５１は、関節に生じているトルクを算出する。上記トルク計算を各関節Ｊ１〜Ｊ６にて実施することにより、各関節Ｊ１〜Ｊ６に生じているトルクを算出する。
【０１２４】
力算出部３５３は、各トルク算出部３５１からのトルクの算出結果を用いて、ロボットハンド２０２に作用する力、即ち計測用ワークＷ３を基準治具Ｗ４に突き当てる力を算出する。具体的には、力算出部３５３は、各軸のトルク算出部３５１からのトルクの計算結果と、リンクパラメータ記憶部３３６に記憶されているロボットアーム２０１のリンクパラメータから、ロボットハンド２０２の任意の位置に生じさせている合成の力を算出する。リンクパラメータ記憶部３３６には、予めロボットアーム２０１のリンクパラメータが記憶（設定）されている。ロボットアーム２０１のリンクパラメータは、ロボットアーム２０１を構成する各リンク２１０〜２１６の長さや各関節Ｊ１〜Ｊ６の位置関係を示したパラメータである。算出する基準となるロボットハンド２０２の任意位置については、例えばロボットハンド２０２の掌面の中心とする。
【０１２５】
このように、力算出部３５３により先端に加わる力に合成を行い、合成力に基づき、押し付け制御部３３２により、一定力になるように押し付けるインピーダンス制御を行うことができる。
【０１２６】
以上、第３実施形態によれば、ロボットアーム２０１の先端位置の補正時に力覚センサを用いることなく補正を行うことができる。よって、力覚センサを搭載していないロボット装置１００Ａにも適用することが可能になる。
【０１２７】
また、ロボット装置１００Ａが力覚センサを搭載していないので、ロボット２００Ａの手首を高剛性にすることができ、ロボットハンド２０２の位置決め精度が更に向上する。
【０１２８】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されない。
【０１２９】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１３０】
また、第３実施形態では、トルク計算を各関節制御部３４０Ａが行う場合について説明したが、これに限定するものではなく、メイン制御部３３０Ａが各関節のトルク計算を行ってもよい。この場合、各関節Ｊ１〜Ｊ６におけるエンコーダ２３５，２３６の検出結果は、メイン制御部３３０Ａに送信されるようにすればよい。また、メイン制御部３３０ＡのＣＰＵ３０１の数又は各関節制御部３４０ＡのＣＰＵ３５１の数は、１つに限定するものではなく、複数あってもよい。
【符号の説明】
【０１３１】
１００…ロボット装置、２０１…ロボットアーム、２０２…ロボットハンド、２３０…関節駆動装置、２３１…モータ、２３５…エンコーダ（モータ角度検出部）、２３６…エンコーダ（関節角度検出部）、３００…制御装置、Ａ…先端軸、Ｂ…中心軸、Ｊ１〜Ｊ６…関節、Ｗ３…計測用ワーク（対称形状部材）、Ｗ４…基準治具（基準部材）
【図１】
0006504864.tif 000003
【図２】
0006504864.tif 000004
【図３】
0006504864.tif 000005
【図４】
0006504864.tif 000006
【図５】
0006504864.tif 000007
【図６】
0006504864.tif 000008
【図７】
0006504864.tif 000009
【図８】
0006504864.tif 000010
【図９】
0006504864.tif 000011
【図１０】
0006504864.tif 000012
【図１１】
0006504864.tif 000013
【図１２】
0006504864.tif 000014
【図１３】
0006504864.tif 000015