(57)【特許請求の範囲】
【請求項１】
サーボモータの出力軸が減速機に駆動連結され、当該減速機の出力軸の回転に応じて可動部材が駆動するロボットを制御するためのロボット制御装置であって、
前記サーボモータの出力軸を回転させるための目標回転角度を設定し、当該目標回転角度に基づいて位置指令を生成する指令生成部と、
前記位置指令に応じて回転した前記サーボモータにおける出力軸の回転角度を示すモータ回転角度と、前記位置指令に応じて回転した前記減速機における出力軸の回転角度を示す減速機回転角度との間のずれを示す補正角度を算出する算出部と、
算出した前記補正角度及び当該補正角度を算出したときの前記モータ回転角度を関連付けて記憶する記憶部とを備え、
前記記憶部には、前記可動部材を第１動作位置から第２動作位置まで駆動させるための教示プログラムが記憶されており、
前記算出部は、前記可動部材を前記教示プログラムに従って第１動作位置に位置させたときのモータ回転角度から前記可動部材を第２動作位置に位置させたときのモータ回転角度までの第１角度範囲において、単位角度ごとに前記補正角度を算出し、
前記記憶部は、第１角度範囲において単位角度ごとに算出した補正角度を、前記教示プログラムに関連付けて第１補正データとして記憶し、
前記指令生成部は、前記教示プログラムに基づいて目標回転角度を新たに設定した場合に、前記記憶部に第１補正データとして記憶されている当該目標回転角度に対応する補正角度で目標回転角度を補正し、補正後の目標回転角度に基づいて前記位置指令を生成する
ことを特徴とするロボット制御装置。
【請求項２】
複数の前記可動部材を備え、
前記算出部は、単一の可動部材を所定の可動範囲に亘って駆動させたときのモータ回転角度の範囲である第２角度範囲において、他の可動部材を停止させた状態で、前記モータ回転角度の単位角度ごとに補正角度を算出し、
前記記憶部は、第２角度範囲において単位角度ごとに算出した補正角度を第２補正データとして記憶し、
前記指令生成部は、目標回転角度を新たに設定した場合に、当該目標回転角度に対応するモータ回転角度が前記記憶部に前記第２補正データとして記憶されている場合には、当該モータ回転角度に関連付けられた補正角度で目標回転角度を補正し、補正後の目標回転角度に基づいて前記位置指令を生成する
ことを特徴とする請求項１に記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置に関する。
【背景技術】
【０００２】
従来、複数のアームを有する多関節型ロボットが知られている。この種の多関節型ロボットにおいては、サーボモータの出力軸が減速機に駆動連結され、その減速機の出力軸の回転に応じてアームが駆動する。このように、サーボモータとアームとの間に減速機が介在されている場合、サーボモータと減速機との間に角度伝達誤差が生じることもある。そして、角度伝達誤差が生じた場合には、サーボモータの目標回転角度とアームの制御位置との間にもずれが生じることになる。
【０００３】
このような点に対して、特許文献１に記載のロボット制御システムでは、多関節型ロボットのアームにＬＥＤを取り付け、このＬＥＤの位置をカメラで撮影することにより、アームの実際の位置を把握する。そして、アームの実際の位置とそのときのサーボモータの目標回転角度とのずれに基づいて目標回転角度を補正するための補正値を演算し、その補正値を予め記憶しておく。その後、多関節型ロボットのアームを動作させる際にサーボモータの目標回転角度を補正値で補正することで、サーボモータの目標回転角度とアームの制御位置との間のずれを抑制できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１２０１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
サーボモータの目標回転角度とアームの制御位置との位置ずれは、上で説明した角度伝達誤差以外にも、サーボモータ、減速機及びアーム等の経時劣化に起因する変形や、サーボモータ及び減速機の部品交換等によっても生じ得る。したがって、より正確なアームの位置制御を実現するには、できるだけ頻繁にサーボモータの目標回転角度とアームの制御位置との間のずれを把握しておくことが好ましい。
【０００６】
しかし、特許文献１のロボット制御システムでは、多関節型ロボットのアームに取り付けるＬＥＤやそのＬＥＤを撮影するカメラなどのように、多関節型ロボットの本来の動作には不要な外部装置を用意する必要がある。そして、サーボモータの目標回転角度とアームの制御位置との間のずれを把握しようとする度に、ＬＥＤやカメラを取り付けたり設置したりするのには相応の手間がかかる。そのため、特許文献１に記載のロボット制御装置の技術で、サーボモータの目標回転角度とアームの制御位置との間のずれを頻繁に把握することは現実的でない。
【課題を解決するための手段】
【０００７】
上記の課題を解決するため、本発明は、サーボモータの出力軸が減速機に駆動連結され、当該減速機の出力軸の回転に応じて可動部材が駆動するロボットを制御するためのロボット制御装置であって、前記サーボモータの出力軸を回転させるための目標回転角度を設定し、当該目標回転角度に基づいて位置指令を生成する指令生成部と、前記位置指令に応じて回転した前記サーボモータにおける出力軸の回転角度を示すモータ回転角度と、前記位置指令に応じて回転した前記減速機における出力軸の回転角度を示す減速機回転角度との間のずれを示す補正角度を算出する算出部と、算出した前記補正角度及び当該補正角度を算出したときの前記モータ回転角度を関連付けて記憶する記憶部とを備え、前記指令生成部は、目標回転角度を新たに設定した場合に、当該目標回転角度に対応するモータ回転角度が前記記憶部に記憶されている場合には、当該モータ回転角度に関連付けられた補正角度で目標回転角度を補正し、補正後の目標回転角度に基づいて前記位置指令を生成することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、より簡便に、サーボモータの目標回転角度とアームの制御位置との間のずれに基づいて目標回転角度を補正するための補正角度を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】多関節型ロボットの側面図。
【図２】教示プログラムに従って駆動したときの溶接トーチの位置を示す図。
【図３】ロボット制御装置のブロック図。
【図４】第１補正テーブルの例を示す図。
【図５】第２補正テーブルの例を示す図。
【図６】第１補正テーブル作成処理のフローチャート。
【図７】第２補正テーブル作成処理のフローチャート。
【図８】目標回転角度の補正処理のフローチャート。
【発明を実施するための形態】
【００１０】
（ロボット制御システムの構成）
本発明のロボット制御装置が適用されるロボット制御システムの概略構成について説明する。先ず、多関節型ロボットＲ（以下、ロボットＲと略記する。）について説明する。
【００１１】
図１に示すように、ロボットＲの基台Ｃ１の上部には、第１回転軸心Ｊ１を中心として旋回可能に旋回台Ｃ２が設けられている。旋回台Ｃ２の上部には、第２回転軸心Ｊ２を中心として旋回可能に第１アームＣ３が設けられている。第１アームＣ３の先端部には、第２回転軸心Ｊ２と直交する第３回転軸心Ｊ３を中心として旋回可能に第２アームＣ４が設けられている。第２アームＣ４の先端部には、第３回転軸心Ｊ３と直交する第４回転軸心Ｊ４を中心として旋回可能に第３アームＣ５が設けられている。
【００１２】
図１に示すように、第３アームＣ５の先端部には、第４回転軸心Ｊ４と直交する第５回転軸心Ｊ５を中心として旋回可能に第４アームＣ６が設けられている。第４アームＣ６の先端部には、第５回転軸心Ｊ５と直交する第６回転軸心Ｊ６を中心として旋回可能に第５アームＣ７が設けられている。第５アームＣ７の先端には、第６回転軸心Ｊ６と直交する第７回転軸心Ｊ７を中心として旋回可能にツール固定部材Ｃ８が設けられている。ツール固定部材Ｃ８には、作業ツールとして溶接トーチＣ９が固定されており、この溶接トーチＣ９はツール固定部材Ｃ８と一体的に旋回する。なお、第４アームＣ６、第５アームＣ７及びツール固定部材Ｃ８は、これら全体で手首組立体と呼称されることもある。
【００１３】
図３に示すように、ロボットＲには、第１アームＣ３を旋回させるための駆動源としてサーボモータ１０が内蔵されている。サーボモータ１０の出力軸１０ａは、減速機１１に駆動連結されている。減速機１１の出力軸１１ａは、第１アームＣ３に固定されている。したがって、サーボモータ１０の出力軸１０ａが回転すると、減速機１１において所定の減速比で減速されて減速機１１の出力軸１１ａが回転する。そして、減速機１１の出力軸１１ａの回転に応じて第１アームＣ３が旋回する。
【００１４】
図３に示すように、ロボットＲには、サーボモータ１０の出力軸１０ａの回転角度を検出するためのモータエンコーダ１２が内蔵されている。モータエンコーダ１２は、例えば、インクリメントエンコーダであり、サーボモータ１０の出力軸１０ａの回転角度に応じたパルス信号をモータ回転角度αとして出力する。また、ロボットＲには、減速機１１の出力軸１１ａの回転角度を検出するための減速機エンコーダ１３が内蔵されている。減速機エンコーダ１３は、例えば、インクリメントエンコーダであり、減速機１１の出力軸１１ａの回転角度に応じたパルス信号を減速機回転角度β１として出力する。モータエンコーダ１２が出力したモータ回転角度α、及び減速機エンコーダ１３が出力した減速機回転角度β１は、基台Ｃ１に接続された通信ケーブルを介してロボット制御装置ＲＣに入力される。なお、以下の説明では、モータ回転角度αの１パルス分（数値「１」分）がサーボモータ１０の出力軸１０ａの回転角度１°に相当するものとする。
【００１５】
ロボットＲには、旋回台Ｃ２、第２アームＣ４〜第５アームＣ７及びツール固定部材Ｃ８それぞれに対応してサーボモータ、減速機、モータエンコーダ及び減速機エンコーダが設けられている。これらの構成は、上述したサーボモータ１０、減速機１１、モータエンコーダ１２及び減速機エンコーダ１３と同様であるため、詳しい説明は省略する。この実施形態においては、旋回台Ｃ２、第１アームＣ３〜第５アームＣ７及びツール固定部材Ｃ８は、いずれも減速機の出力軸の回転に応じて駆動する可動部材に相当する。また、以下の説明では、これら旋回台Ｃ２、第２アームＣ４〜第５アームＣ７及びツール固定部材Ｃ８を「可動部材」と呼称することもある。
【００１６】
次に、ロボット制御装置ＲＣについて説明する。
図３に示すように、ロボット制御装置ＲＣの主制御部２０は、各種のアプリケーションを実行する演算部２１（ＣＰＵ）、処理に必要なアプリケーションや各種のデータが格納される不揮発性の記憶部２５、各アプリケーションの実行に際してデータが一時的に格納される揮発性のメモリ２８などを有するコンピュータとして構成されている。
【００１７】
図３に示すように、主制御部２０における演算部２１は、サーボモータ１０の出力軸１０ａを目標となる角度位置に回転させるための位置指令Ｓ１を生成する指令生成部２２として機能する。例えば第１アームＣ３を制御する場合、指令生成部２２は、第１アームＣ３を所定の位置に駆動させるのに必要なサーボモータ１０の出力軸１０ａの角度位置として目標回転角度θ１を設定する。また、指令生成部２２は、記憶部２５に第１補正テーブルＴ１又は第２補正テーブルＴ２として記憶されている補正角度Δで目標回転角度θ１を補正して、補正目標角度θ２を設定する。指令生成部２２は、この補正目標角度θ２に基づいて位置指令Ｓ１を生成して出力する。指令生成部２２は、第１アームＣ３以外の他の可動部材を制御する場合においても同様に、位置指令Ｓ１を生成する。
【００１８】
図３に示すように、主制御部２０における演算部２１は、補正角度Δを算出する算出部２３として機能する。算出部２３には、モータエンコーダ１２が出力したモータ回転角度α及び減速機エンコーダ１３が出力した減速機回転角度β１が入力される。算出部２３は、減速機回転角度β１をモータ回転角度αに換算した換算角度β２を算出する。そして、算出部２３は、これらモータ回転角度α及び換算角度β２（減速機回転角度β１）に基づいて、両回転角度の間のずれを示す補正角度Δを算出し、これを記憶部２５に第１補正テーブルＴ１又は第２補正テーブルＴ２として記憶させる。なお、換算角度β２及び補正角度Δの具体的な算出態様については後述する。
【００１９】
図３に示すように、主制御部２０における記憶部２５には、各可動部材Ｃ２〜Ｃ８を駆動させるための教示プログラムＰが記憶されている。教示プログラムＰは、例えば、溶接トーチＣ９の先端位置を、所定の軌跡に沿って移動させるのに必要な各可動部材Ｃ２〜Ｃ８の位置や姿勢が記録されたものである。溶接トーチＣ９の先端位置の移動軌跡としては、例えば図２に示すように、点Ａから点Ｂへと直線的に移動し、点Ｂから点Ｃへと直線的に移動するといったものである。
【００２０】
図３に示すように、記憶部２５には、教示プログラムＰと関連付けて第１補正テーブルＴ１が記憶されている。図４に示すように第１補正テーブルＴ１には、教示プログラムＰの名称と当該第１補正テーブルＴ１が適用される可動部材の名称が記憶されている。また、第１補正テーブルＴ１には、溶接トーチＣ９の先端位置、その先端位置になったときのモータ回転角度α、その先端位置になったときの減速機回転角度β１をモータ回転角度αに換算した換算角度β２、その先端位置になったときの目標回転角度θ１の補正角度Δが互いに関連付けられて記憶されている。なお、図４では、第１アームＣ３に適用される第１補正テーブルＴ１を図示しているが、記憶部２５には、１つの教示プログラムＰに対し、可動部材Ｃ２〜Ｃ８毎の第１補正テーブルＴ１（合計７つの第１補正テーブルＴ１）が記憶されている。
【００２１】
図３に示すように、記憶部２５には、第１補正テーブルＴ１とは別に第２補正テーブルＴ２が記憶されている。第２補正テーブルＴ２は、特定の教示プログラムＰに関連付けられてはなく、汎用の補正テーブルとなっている。図５に示すように、第２補正テーブルＴ２には、可動部材の角度位置、その角度位置になったときのモータ回転角度α、その角度位置になったときの減速機回転角度β１をモータ回転角度αに換算した換算角度β２、その角度位置になったときの目標回転角度θ１の補正角度Δが互いに関連付けられて記憶されている。なお、図５では、第１アームＣ３に適用される第２補正テーブルＴ２を図示しているが、記憶部２５には、可動部材Ｃ２〜Ｃ８毎の第２補正テーブルＴ２（合計７つの第２補正テーブルＴ２）が記憶されている。
【００２２】
図３に示すように、ロボット制御装置ＲＣには、ロボットＲに内蔵されている各サーボモータに電力を供給するサーボ制御部３０が内蔵されている。例えば、サーボモータ１０を制御する場合、サーボ制御部３０は、演算部２１から出力される位置指令Ｓ１に応じてパルス周波数及びパルス幅等を調整したモータ制御電圧Ｖｘを、サーボモータ１０に出力する。サーボ制御部３０は、他のサーボモータ１０に対しても同様に、位置指令Ｓ１に応じて調整したモータ制御電圧Ｖｘを出力する。
【００２３】
（第１補正テーブルの算出処理）
ロボット制御装置ＲＣが実行する第１補正テーブルＴ１の算出処理について説明する。なお、以下の説明では、ロボット制御装置ＲＣにおける記憶部２５に、予め教示プログラムＰが記憶されているものとする。そして、その教示プログラムＰは、図２に示すように、溶接トーチＣ９の先端位置を、始点である点Ａから点Ｂへと直線的に移動させ、その後、点Ｂから終点である点Ｃへと直線的に移動させる内容である。また、可動部材Ｃ２〜Ｃ８のうち、第１アームＣ３を例として、第１補正テーブルＴ１の算出処理を説明するが、その他の可動部材についても同様である。
【００２４】
例えば、オペレータがロボット制御装置ＲＣやロボット制御装置ＲＣに接続されている操作装置を操作することにより、教示プログラムＰに対する第１補正テーブルＴ１の算出処理が指示されると、ロボット制御装置ＲＣの主制御部２０において図６に示す一連の処理が実行される。
【００２５】
ステップＳＴ１０では、主制御部２０の指令生成部２２は、教示プログラムＰに従って、溶接トーチＣ９の先端位置が始点である点Ａに位置するように、各サーボモータに対する位置指令Ｓ１を生成する。また、サーボ制御部３０は、その位置指令Ｓ１に応じたモータ制御電圧Ｖｘを各サーボモータに供給する。その結果、各可動部材Ｃ２〜Ｃ８が旋回して、溶接トーチＣ９の先端位置が始点である点Ａに位置する。その後、主制御部２０の処理はステップＳＴ１１に移行する。
【００２６】
ステップＳＴ１１では、主制御部２０の算出部２３は、溶接トーチＣ９の先端位置が点Ａに位置した状態で、第１アームＣ３に対応するモータエンコーダ１２が出力したモータ回転角度αを取得する。同様に、算出部２３は、溶接トーチＣ９の先端位置が点Ａに位置した状態で、第１アームＣ３に対応する減速機エンコーダ１３が出力した減速機回転角度β１を取得する。その後、主制御部２０の処理は、ステップＳＴ１２に移行する。
【００２７】
ステップＳＴ１２では、主制御部２０の算出部２３は、減速機回転角度β１を、モータ回転角度αに換算した換算角度β２を算出する。減速機１１における減速比を「Ｎ」、モータエンコーダ１２の分解能を「Ｐ１」、減速機エンコーダ１３の分解能を「Ｐ２」としたとき、換算角度β２は以下の式１で求められる。
【００２８】
（式１）  β２＝β１×（Ｐ１／Ｐ２）×Ｎ
具体的には、減速機回転角度β１が３２［pulse］、モータエンコーダ１２の分解能が１０［bit］（＝１０２４）、減速機エンコーダ１３の分解能が１４［bit］（＝１６３８４）、減速比が１００であるとき、換算角度β２は２００［pulse］である。これにより、減速比とモータエンコーダ１２及び減速機エンコーダ１３の分解能の違いとを考慮した減速機回転角度β１の換算角度β２が得られる。換算角度β２を算出した後、主制御部２０の処理はステップＳＴ１３に移行する。
【００２９】
ステップＳＴ１３では、主制御部２０の算出部２３は、モータ回転角度αからステップＳＴ１２で算出した換算角度β２を減算して、補正角度Δを算出する。その後のステップＳＴ１４では、算出部２３は、算出した補正角度Δ、その補正角度Δを算出したときのモータ回転角度α及び換算角度β２を記憶部２５に出力する。記憶部２５は、これら補正角度Δ、モータ回転角度α及び換算角度β２を、溶接トーチＣ９の先端位置が点Ａにある場合の第１補正テーブルＴ１のパラメータとして互いに関連付けて記憶する。その後、主制御部２０の処理はステップＳＴ１５に移行する。
【００３０】
ステップＳＴ１５では、主制御部２０の指令生成部２２は、溶接トーチＣ９の先端位置が終点である点Ｃに達したか否かを判断する。この時点では、溶接トーチＣ９の先端位置は点Ａに位置しているため、溶接トーチＣ９の先端位置が点Ｃに達していないと判断される（ステップＳＴ１５においてＮＯ）。この場合、主制御部２０の処理はステップＳＴ１６へ移行する。
【００３１】
ステップＳＴ１６では、主制御部２０の指令生成部２２は、新たな位置指令Ｓ１を生成して、溶接トーチＣ９の先端位置が点Ａから点Ｂへ向けて直線的に移動するように、サーボモータ１０の出力軸１０ａを単位角度回転させる。この実施例では、単位角度をモータエンコーダ１２の１パルス分の角度に設定している。その結果、溶接トーチＣ９の先端位置は点Ｘ１に位置する。その後、主制御部２０の処理はステップＳＴ１１に戻り、新たな溶接トーチＣ９の先端位置である点Ｘ１について、ステップＳＴ１１〜ＳＴ１６の処理が繰り返される。
【００３２】
上記ステップＳＴ１１〜ＳＴ１６が繰り返されると、溶接トーチＣ９の先端位置は、点Ａから点Ｂを経て、最終的に終点である点Ｃに達する。そして、溶接トーチＣ９の先端位置が点Ｃに達した状態で、ステップＳＴ１５の処理が実行されると、主制御部２０の指令生成部２２は、溶接トーチＣ９の先端位置が終点である点Ｃに達したと判断し（ステップＳＴ１５においてＹＥＳ）、一連の処理が終了する。
【００３３】
上記一連の第１補正テーブルＴ１の算出処理によって、図４に示すように、教示プログラムに従ってロボットＲを動作させた場合のサーボモータ１０の出力軸１０ａの回転角度範囲において、当該出力軸１０ａを単位角度ずつ回転させた場合の各補正角度Δが第１補正テーブルＴ１として記憶部２５に記憶される。
【００３４】
（第２補正テーブルの算出処理）
ロボット制御装置ＲＣが実行する第２補正テーブルＴ２の算出処理について説明する。なお、以下の説明では、可動部材Ｃ２〜Ｃ８のうち、第１アームＣ３を例として、第２補正テーブルＴ２の算出処理を説明するが、その他の可動部材についても同様である。
【００３５】
例えば、オペレータがロボット制御装置ＲＣやロボット制御装置ＲＣに接続されている操作装置を操作することにより、第１アームＣ３に対する第２補正テーブルＴ２の算出処理が指示されると、ロボット制御装置ＲＣにおける主制御部２０の指令生成部２２は、第１アームＣ３以外の可動部材の位置を予め定められている基準位置に移動させる。この基準位置は、例えば、各可動部材の重心が第１アームＣ３の回転軸である第２回転軸心Ｊ２に最も近くなる位置に設定されている。第１アームＣ３以外の可動部材の位置がそれぞれ基準位置に位置すると、図７に示す一連の処理が実行される。
【００３６】
ステップＳＴ２０では、主制御部２０の指令生成部２２は、第１アームＣ３の位置が予め定められた原点に位置するように、サーボモータ１０に対する位置指令Ｓ１を生成する。本実施例では、第１アームＣ３の旋回範囲として、鉛直方向を基準として前後に６０°ずつ、合計１２０°の範囲が設定されている。そして、その１２０°の範囲の端から端までを、原点（０°）〜終点（１２０°）としている。第１アームＣ３が原点に位置した後、主制御部２０の処理はステップＳＴ２１に移行する。
【００３７】
ステップＳＴ２１では、主制御部２０の算出部２３は、第１アームＣ３が原点に位置した状態で、モータエンコーダ１２が出力したモータ回転角度αを取得する。同様に、算出部２３は、第１アームＣ３が原点に位置した状態で、減速機エンコーダ１３が出力した減速機回転角度β１を取得する。その後、主制御部２０の処理は、ステップＳＴ２２に移行する。
【００３８】
ステップＳＴ２２では、主制御部２０の算出部２３は、上述した（式１）に従って、減速機回転角度β１を、モータ回転角度αに換算した換算角度β２を算出する。換算角度β２を算出した後、主制御部２０の処理はステップＳＴ２３に移行する。
【００３９】
ステップＳＴ２３では、主制御部２０の算出部２３は、モータ回転角度αからステップＳＴ２２で算出した換算角度β２を減算して、補正角度Δを算出する。その後のステップＳＴ２４では、算出部２３は、算出した補正角度Δ、その補正角度Δを算出したときのモータ回転角度α及び換算角度β２を記憶部２５に出力する。記憶部２５は、これら補正角度Δ、モータ回転角度α及び換算角度β２を、第１アームＣ３が原点に位置している場合の第２補正テーブルＴ２のパラメータとして互いに関連付けて記憶する。その後、主制御部２０の処理はステップＳＴ２５に移行する。
【００４０】
ステップＳＴ２５では、主制御部２０の指令生成部２２は、第１アームＣ３の位置が終点に達したか否かを判断する。この時点では、第１アームＣ３の位置は０°（原点）であるため、終点に達してはいないと判断される（ステップＳＴ２５においてＮＯ）。この場合、主制御部２０の処理はステップＳＴ２６へ移行する。
【００４１】
ステップＳＴ２６では、主制御部２０の指令生成部２２は、新たな位置指令Ｓ１を生成して、サーボモータ１０の出力軸１０ａを単位角度回転させる。この実施例では、単位角度をモータエンコーダ１２の１０パルス分、すなわち１０°に設定している。その結果、第１アームＣ３は原点から１０°回転する。その後、主制御部２０の処理はステップＳＴ２１に戻り、新たな第１アームＣ３の位置について、ステップＳＴ２１〜ＳＴ３６の処理が繰り返される。
【００４２】
上記ステップＳＴ２１〜ＳＴ２６が繰り返されると、第１アームＣ３は原点から１２０°回転して終点に達する。そして、第１アームＣ３の位置が終点に達した状態で、ステップＳＴ２５の処理が実行されると、主制御部２０の指令生成部２２は、第１アームＣ３が終点に達したと判断し（ステップＳＴ２５においてＹＥＳ）、一連の処理が終了する。この第２補正テーブルＴ２の算出処理によって、図５に示すように、第１アームＣ３の所定の旋回範囲においてサーボモータ１０の出力軸１０ａを単位角度ずつ回転させた場合の各補正角度Δが第２補正テーブルＴ２として記憶部２５に記憶される。
【００４３】
（目標回転角度の補正処理）
次に、第１補正テーブルＴ１又は第２補正テーブルＴ２に基づいて、目標回転角度θ１を補正する処理について説明する。先ず、ロボット制御装置ＲＣにおける主制御部２０の指令生成部２２は、参照するべき補正テーブルが第１補正テーブルＴ１であるか、第２補正テーブルＴ２であるかを選択する。指令生成部２２は、教示プログラムＰに従って各可動部材を駆動させる場合には、参照するべき補正テーブルとして第１補正テーブルＴ１を選択する。第１補正テーブルＴ１が関連付けられていないその他の教示プログラムに従って各可動部材を駆動させる場合、及び教示プログラムに従わずに各可動部材を動作させる場合には、参照するべき補正テーブルとして第２補正テーブルＴ２を選択する。参照するべき補正テーブルを選択した後、主制御部２０の処理は図８に示すステップＳＴ３０に移行する。なお、以下の説明では、第１アームＣ３を駆動するサーボモータ１０の出力軸１０ａにおける目標回転角度θ１の補正処理について説明するが、他の可動部材についても同様である。
【００４４】
ステップＳＴ３０では、主制御部２０の指令生成部２２は、サーボモータ１０の出力軸１０ａの目標回転角度θ１を設定する。具体的には、例えば、教示プログラムＰに従って第１アームＣ３を駆動させる場合には、その教示プログラムＰに従って目標回転角度θ１を設定する。また、例えば、教示プログラムＰに従わずに第１アームＣ３を駆動させる場合には、オペレータがロボット制御装置ＲＣやロボット制御装置ＲＣに接続されている操作装置において入力した情報に従って目標回転角度θ１を設定する。その後、主制御部２０の処理は、ステップＳＴ３１に移行する。
【００４５】
ステップＳＴ３１では、主制御部２０の指令生成部２２は、参照する第１補正テーブルＴ１又は第２補正テーブルＴ２に記憶されているモータ回転角度αの中に、ステップＳＴ３０で設定した目標回転角度θ１と同一のものがあるか否かを判断する。具体的には、例えば、図４に示すように、第１補正テーブルＴ１には、１パルス毎にモータ回転角度αが記憶されている。したがって、第１補正テーブルＴ１を参照している場合には、どのような目標回転角度θ１が設定されていても、これと同一のモータ回転角度αがあると判断される。一方、例えば、図５に示すように、第２補正テーブルＴ２には、１０パルス毎にモータ回転角度αが記憶されている。したがって、第２補正テーブルＴ２を参照している場合には、同一のモータ回転角度αがあると判断されることも、同一のモータ回転角度αがないと判断されることもある。
【００４６】
同一のモータ回転角度αがあると判断された場合（ステップＳＴ３１においてＹＥＳ）には、主制御部２０の処理はステップＳＴ３２に移行する。ステップＳＴ３２では、主制御部２０の指令生成部２２は、目標回転角度θ１と同一であると判断されたモータ回転角度αに関連付けられている補正角度Δを記憶部２５から読み出す。そして、指令生成部２２は、ステップＳＴ３０で設定した目標回転角度θ１に読み出した補正角度Δを加算することにより補正して、補正目標角度θ２を算出する。具体的には、図４に示すように、目標回転角度θ１と同一であると判断されたモータ回転角度αが「３３」である場合には、指令生成部２２は、補正角度Δとして「２」を読み出す。そして、指令生成部２２は、目標回転角度「３３」に補正角度「２」を加算して、補正目標角度「３５」を算出する。その後のステップＳＴ３４では、指令生成部２２は、補正目標角度θ２に基づいて位置指令Ｓ１を生成する。
【００４７】
一方、同一のモータ回転角度αがないと判断された場合（ステップＳＴ３１においてＮＯ）には、主制御部２０の処理はステップＳＴ３３に移行する。ステップＳＴ３３では、主制御部２０の指令生成部２２は、目標回転角度θ１を中心とした所定の範囲（例えば±１０°）内で、その目標回転角度θ１に対応するモータ回転角度αとして最も近いモータ回転角度αを判断する。最も近いモータ回転角度αが２つある場合には、値が小さい方のモータ回転角度αを対応するモータ回転角度αと判断する。最も近いモータ回転角度αが判断できた場合には、目標回転角度θ１に対応するモータ回転角度αが記憶部２５に記憶されていることになる。そして、その最も近いと判断されたモータ回転角度αに関連付けられている補正角度Δを記憶部２５から読み出す。指令生成部２２は、ステップＳＴ３０で設定した目標回転角度θ１に読み出した補正角度Δを加算することにより補正して、補正目標角度θ２を算出する。具体的には、図５に示すように、目標回転角度θ１が「１９」である場合、第２補正テーブルＴ２に記憶されているモータ回転角度αのうち最も近いのはモータ回転角度「２０」である。そして、最も近いと判断されたモータ回転角度αが「２０」である場合には、指令生成部２２は、補正角度Δとして「２」を読み出す。そして、指令生成部２２は、目標回転角度「１９」に補正角度「２」を加算して、補正目標角度「２１」を算出する。その後のステップＳＴ３４では、指令生成部２２は、補正目標角度θ２に基づいて位置指令Ｓ１を生成する。これら一連の処理は、主制御部２０の指令生成部２２が新たな目標回転角度θ１を設定するたびに実行される。なお、記憶部２５に、目標回転角度θ１を中心とした所定の範囲内に対応するモータ回転角度αが記憶されていない場合には、指令生成部２２は、目標回転角度θ１の補正を行わない。
【００４８】
（ロボット制御装置の作用）
上記のように目標回転角度θ１を補正角度Δで補正するロボット制御装置ＲＣと、このような目標回転角度θ１の補正を行わないロボット制御装置とを対比させつつ、上記実施形態の作用を説明する。
【００４９】
例えば、図２に示すように、オペレータが、溶接トーチＣ９の先端位置が点Ａから点Ｂを経て点Ｃに至る教示プログラムＰを作成したとする。このとき、オペレータは、溶接トーチＣ９の先端を目視したりセンサで検出したりしながらロボットＲを操作し、溶接トーチＣ９の先端位置を点Ａ、点Ｂ及び点Ｃの各点に位置させる。したがって、点Ａ、点Ｂ及び点Ｃの各点においては、サーボモータ１０の出力軸１０ａのモータ回転角度αと減速機１１の出力軸１１ａの減速機回転角度β１（換算角度β２）との間にずれが生じているか否かに拘わらず、溶接トーチＣ９の先端位置は点Ａ、点Ｂ及び点Ｃの各点に一致する。その一方で、点Ａから点Ｂへの間の移動軌跡、点Ｂから点Ｃへの間の移動軌跡は、ロボット制御装置ＲＣの主制御部２０によって自動的に演算される。そのため、サーボモータ１０、減速機１１及び各可動部材の変形等に起因して、モータ回転角度αと減速機回転角度β１（換算角度β２）との間にずれが生じていても、自動的に演算された各点間の移動軌跡にはそのずれは反映されない。したがって、理想的には、各点間の移動軌跡は直線的になるところ、目標回転角度θ１の補正を行わないロボット制御装置で実際にロボットを駆動させると図２において一点鎖線で図示するように各点間の移動軌跡が波打ったり円弧状になったりすることがある。なお、図２では、ずれを誇張して図示している。
【００５０】
この点、上記実施形態のロボット制御装置ＲＣにおいては、実際にロボットＲを駆動してモータ回転角度αと減速機回転角度β１（換算角度β２）との間のずれを算出し、それを第１補正テーブルＴ１において補正角度Δとして記憶している。この補正角度Δで目標回転角度θ１を補正することにより、実際にロボットＲを駆動したときのずれを抑制することができる。
【００５１】
また、教示プログラムＰに従わずに、例えばオペレータがロボット制御装置ＲＣや操作装置で座標を入力し、その座標上に溶接トーチＣ９の先端位置を移動させる場合がある。この場合でも、実際にロボットＲを駆動させた場合には、モータ回転角度αと減速機回転角度β１（換算角度β２）との間のずれに起因して、溶接トーチＣ９の先端位置が入力した座標上からずれることがある。この点、上記実施形態では、実際にロボットＲを駆動したときのモータ回転角度αと減速機回転角度β１（換算角度β２）との間のずれを、第２補正テーブルＴ２において補正角度Δとして記憶している。この補正角度Δで目標回転角度θ１を補正することにより、実際にロボットＲを駆動したときのずれを抑制することができる。
【００５２】
（上記ロボット制御装置の特徴及び効果）
上記実施形態のロボット制御装置ＲＣの特徴をその効果とともに記載する。
（１）上記実施形態では、ロボットＲにモータエンコーダ１２及び減速機エンコーダ１３が内蔵されていれば、モータ回転角度αと減速機回転角度β１との間のずれに基づいて、目標回転角度θ１の補正角度Δを算出できる。しかも、モータエンコーダ１２及び減速機エンコーダ１３は、補正角度Δの算出以外にも、ロボットＲの各可動部材の位置制御にも利用できる。したがって、モータ回転角度αと減速機回転角度β１との間のずれを把握するためだけに外部装置を用意する必要はないし、また、その外部装置を、ずれを把握しようとする度に取り付けたり設置したりする必要はない。その結果、上記実施形態では、より簡便にモータ回転角度αと減速機回転角度β１との間のずれを補正角度Δとして把握できる。
【００５３】
（２）モータ回転角度αと減速機回転角度β１との間のずれは、例えば、各可動部材の重量が減速機１１等に作用して、減速機１１が弾性変形することによっても生じ得る。そして、この減速機１１の弾性変形の程度は、各可動部材の姿勢によって変化する。この点、上記実施形態では、実際に教示プログラムＰに従ってロボットＲを駆動させたときの補正角度Δを第１補正テーブルＴ１として記憶している。したがって、各可動部材の重量が作用することに起因するモータ回転角度αと減速機回転角度β１との間のずれを補正角度Δに反映することができ、より正確な目標回転角度θ１の補正が可能となる。
【００５４】
（３）上記実施形態では、教示プログラムＰに従ってロボットＲを駆動させないときであっても第２補正テーブルＴ２として記憶されている補正角度Δを用いて、目標回転角度θ１を補正できる。すなわち、第２補正テーブルＴ２においてモータ回転角度αとして記憶されている角度範囲内であれば、第２補正テーブルＴ２として記憶されている補正角度Δは適用される状況を選ばず、汎用的に目標回転角度θ１の補正に使用できる。
【００５５】
（４）上記実施形態では、教示プログラムＰに対応する第１補正テーブルＴ１においてはモータ回転角度αの１パルス毎に補正角度Δを記憶している。このようにより細かい単位角度毎に補正角度Δを記憶しておくことで、目標回転角度θ１の補正の正確性を担保することができる。その一方で、教示プログラムＰに従って動作する第１アームＣ３の駆動範囲には限りがあるので、細かい単位角度毎に補正角度Δを記憶していても主制御部２０の記憶部２５の容量を逼迫する可能性は小さい。
【００５６】
（５）上記実施形態では、教示プログラムＰに対応しない汎用的な第２補正テーブルＴ２については、第１補正テーブルＴ１における単位角度よりも大きいモータ回転角度αの１０パルス毎に補正角度Δを記憶する。このように比較的に大きな単位角度毎に補正角度Δを記憶しておけば、比較的に広い範囲に対応して補正角度Δを記憶する場合であっても第２補正テーブルＴ２を記憶するのに必要な記憶容量を低減できる。
【００５７】
（変更例）
上記実施形態は以下のように変更することができる。なお、各変更例を適宜組み合わせて適用することもできる。
【００５８】
・ロボットＲの態様は上記各実施形態のものに限らない。例えば、各可動部材Ｃ２〜Ｃ８の数は７つに限らず、６つ以下でも８つ以上でもよい。また、各可動部材Ｃ２〜Ｃ８は、旋回動作するものに限らず、例えばスライド移動するものであってもよい。
【００５９】
・モータエンコーダ１２及び減速機エンコーダ１３は、各出力軸の回転角度を検出できるのであれば、インクリメントエンコーダに限らない。例えば、モータエンコーダ１２及び減速機エンコーダ１３として、アブソリュートエンコーダを適用してもよい。
【００６０】
・サーボモータ１０の出力軸１０ａに対して、複数の減速機が直列的に接続されていてもよい。例えば、サーボモータ１０の出力軸１０ａに第１の減速機が接続され、第１の減速機の出力軸に第２の減速機が接続されていてもよい。この場合、第２の減速機の出力軸の回転を減速機エンコーダで検出すれば、第１及び第２の減速機全体の出力軸の回転角度とモータ回転角度αとのずれを検出することができる。
【００６１】
・上記実施形態では、モータ回転角度αの１パルス分（数値「１」分）がサーボモータ１０の出力軸１０ａの回転角度１°に相当するものとして説明したが、これはあくまでも説明上の例示である。一般的には、例えば、モータ回転角度αの数十〜数百パルス分がサーボモータ１０の出力軸１０ａの回転角度１°に相当することが多い。もちろん、実施形態で例示したように、モータ回転角度αの１パルス分（数値「１」分）がサーボモータ１０の出力軸１０ａの回転角度１°に相当することもありえる。
【００６２】
・全ての可動部材Ｃ２〜Ｃ８に対応して補正角度Δ（補正テーブル）を記憶しなくてもよい。例えば、可動部材Ｃ２〜Ｃ８の位置やサーボモータ及び減速機の構成によっては、モータ回転角度αと減速機回転角度β１との間にずれが生じにくい場合もある。このような可動部材については、補正角度Δ（補正テーブル）を記憶せず目標回転角度θ１の補正を行わなくても構わない。
【００６３】
・第１補正テーブルＴ１及び第２補正テーブルＴ２のうちいずれか一方のみが、ロボット制御装置ＲＣにおける記憶部２５に記憶されていてもよい。教示プログラムＰに従ってロボットＲを動作させることが大半であれば、第２補正テーブルＴ２を記憶させなくてもよいし、逆に教示プログラムＰに従って動作させることが少ないのであれば、第１補正テーブルＴ１を記憶させなくてもよい。すなわち、制御対象となるロボットＲの動作態様に応じて記憶するべき補正テーブルを決定すればよい。
【００６４】
・教示プログラムＰに従ってロボットＲを動作させている場合であっても、第２補正テーブルＴ２として記憶されている補正角度Δを用いて、目標回転角度θ１を補正してもよい。
【００６５】
・複数の教示プログラムＰがロボット制御装置ＲＣにおける記憶部２５に記憶されている場合において、全ての教示プログラムＰそれぞれに対応して第１補正テーブルＴ１を記憶させてもよいし、複数の教示プログラムＰのうちの一部に対応して第１補正テーブルＴ１を記憶させてもよい。
【００６６】
・補正角度Δをロボット制御装置ＲＣの記憶部２５に記憶させる場合において、その記憶態様は、上で例示した補正テーブルの態様に限らない。例えば、モータ回転角度αの変化と補正角度Δの変化との関係に規則性があるのであれば、その規則性を数式として記憶していてもよい。このように数式を記憶した場合でも、モータ回転角度αと補正角度Δとは関連付けられているといえる。
【００６７】
・第２補正テーブルＴ２の算出処理において、第１アームＣ３の旋回範囲は適宜変更できる。第１アームＣ３を旋回駆動させた場合に、各可動部材が他の装置や地面等に干渉しない範囲内、ロボットＲに接続されているケーブル類に無理な応力がかからない範囲内で適宜設定すればよい。
【００６８】
・第２補正テーブルＴ２の算出処理において、対象となっている可動部材以外の可動部材が移動される基準位置は適宜設定できる。例えば、第１アームＣ３を旋回させた場合に、可動部材が地面等に干渉しない位置を基準位置にしてもよい。また、基準位置を設定しないことも可能である。なお、基準位置を設定しない場合、第２補正テーブルＴ２の算出処理毎に各可動部材の位置や姿勢が異なることもあり得るが、各可動部材の重量に起因して減速機等に変形が生じにくいのであれば、特に問題は生じない。
【００６９】
・上記実施形態における第１補正テーブルＴ１及び第２補正テーブルＴ２において、モータ回転角度αの単位角度は適宜変更できる。例えば、第１補正テーブルＴ１において１０パルス毎にモータ回転角度α及び補正角度Δを記憶してもよいし、第２補正テーブルＴ２において１パルス毎にモータ回転角度α及び補正角度Δを記憶してもよい。また、単位角度は一定である必要はなく、途中で変更することもできる。例えば、第１補正テーブルＴ１において、溶接トーチＣ９の先端位置が点Ａから点Ｂまでの範囲では１パルス毎にモータ回転角度α及び補正角度Δを記憶し、点Ｂから点Ｃまでの範囲では１０パルス毎にモータ回転角度α及び補正角度Δを記憶してもよい。
【００７０】
・上記実施形態では、補正テーブルの算出処理と目標回転角度の補正処理とを分けて説明したが、これらが同時に行われることもある。例えば、教示プログラムＰに従ってロボットＲを動作させる際、既にロボット制御装置ＲＣの記憶部２５に記憶されている第１補正テーブルＴ１を使用して目標回転角度θ１を補正する。これと同時に、モータ回転角度αと減速機回転角度β１とのずれを補正角度Δとして算出して新たな第１補正テーブルＴ１を記憶する。このようにすれば、教示プログラムＰに従って繰り返し同じ動作をロボットＲに行わせる場合において、前回以前の動作で記憶した第１補正テーブルＴ１で目標回転角度θ１を補正しつつ、次回以降にロボットＲを動作させる際に使用できる新たな第１補正テーブルＴ１を記憶できる。
【００７１】
（技術思想の追記）
上記実施形態及び変更例から導き出せる技術思想を以下に追記する。
・指令生成部は、教示プログラムに基づかずに目標回転角度を設定する場合には、第２補正データとして記憶されている補正角度で目標回転角度を補正する。
【００７２】
・ロボットは複数の可動部材を有し、第１補正データ及び第２補正データは、可動部材毎に記憶部に記憶されている。
【符号の説明】
【００７３】
Ｒ…多関節型ロボット、ＲＣ…ロボット制御装置、２０…主制御部、２１…演算部、２２…指令生成部、２３…算出部、２５…記憶部、Ｐ…教示プログラム、Ｔ１…第１補正テーブル、Ｔ２…第２補正テーブル、Ｓ１…位置指令、α…モータ回転角度、β１…減速機回転角度、β２…換算角度、Δ…補正角度。
【図１】
0006576824.tif 000002
【図２】
0006576824.tif 000003
【図３】
0006576824.tif 000004
【図４】
0006576824.tif 000005
【図５】
0006576824.tif 000006
【図６】
0006576824.tif 000007
【図７】
0006576824.tif 000008
【図８】
0006576824.tif 000009