(57)【要約】【課題】補正された位置姿勢値を一意の各軸値に逆変換できない特異点において、ロボットの位置決め精度を向上する。【解決手段】  コントローラ２は、補正された位置姿勢指令値をロボット７の各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、逆変換できるときに、補正位置姿勢指令値を各補正軸指令値に逆変換し、各補正軸指令値から補正前の各軸指令値を減算することにより各関節駆動軸の補正値を算出してメモリ３に格納する一方、逆変換できないときに、制御タイミングの直前の少なくとも１つの制御タイミングにおいてメモリ３に格納された各補正値に基づいて各関節駆動軸の推測補正値を算出し、各推測補正値を補正前の各軸指令値に加算することにより各補正軸指令値を算出するとともに、各推測補正値を各補正値としてメモリ３に格納する。【選択図】図１
2010269421.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御手段を備えたロボット制御装置において、
上記制御手段は、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換し、上記各補正軸指令値から上記補正前の各軸指令値を減算することにより各関節駆動軸の補正値を算出して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とするロボット制御装置。
【請求項２】
上記制御手段は、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出することを特徴とする請求項１記載のロボット制御装置。
【請求項３】
上記制御手段は、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングにおいて、当該制御タイミングが上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるか否かを判断し、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングが、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるときは、上記補正位置姿勢指令値を逆変換して得られる各軸指令値から上記各軸指令値を減算し、当該減算結果の補正値及び上記制御タイミングの直前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各補正値に基づいて各関節駆動軸の推測補正値を算出することを特徴とする請求項１又は２記載のロボット制御装置。
【請求項４】
上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の平均値を、上記推測補正値とすることを特徴とする請求項１乃至３のうちのいずれか１つに記載のロボット制御装置。
【請求項５】
上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の各差分値に基づいて、上記各関節駆動軸の推測補正値を算出することを特徴とする請求項１乃至３のうちのいずれか１つに記載のロボット制御装置。
【請求項６】
上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された補正値を、上記推測補正値とすることを特徴とする請求項１乃至３のうちのいずれか１つに記載のロボット制御装置。
【請求項７】
上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して所定の関数を当てはめ、当該当てはめられた関数を用いて上記各関節駆動軸の推測補正値を算出することを特徴とする請求項１乃至３のうちのいずれか１つに記載のロボット制御装置。
【請求項８】
上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して予め設定された所定の重みを用いて、上記各補正値の加重平均値を算出し、当該加重平均値を上記推測補正値とすることを特徴とする請求項１乃至３のうちのいずれか１つに記載のロボット制御装置。
【請求項９】
上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする請求項１乃至８のうちのいずれか１つに記載のロボット制御装置。
【請求項１０】
少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御手段を備えたロボット制御装置において、
上記制御手段は、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とするロボット制御装置。
【請求項１１】
上記制御手段は、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出することを特徴とする請求項１０記載のロボット制御装置。
【請求項１２】
上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする請求項１０又は１１記載のロボット制御装置。
【請求項１３】
少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御ステップを含むロボット制御方法において、
上記制御ステップは、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換し、上記各補正軸指令値から上記補正前の各軸指令値を減算することにより各関節駆動軸の補正値を算出して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とするロボット制御方法。
【請求項１４】
上記制御ステップは、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出することを特徴とする請求項１３記載のロボット制御方法。
【請求項１５】
上記制御ステップは、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングにおいて、当該制御タイミングが上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるか否かを判断し、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングが、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるときは、上記補正位置姿勢指令値を逆変換して得られる各軸指令値から上記各軸指令値を減算し、当該減算結果の補正値及び上記制御タイミングの直前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各補正値に基づいて各関節駆動軸の推測補正値を算出することを特徴とする請求項１３又は１４記載のロボット制御方法。
【請求項１６】
上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の平均値を、上記推測補正値とすることを特徴とする請求項１３乃至１５のうちのいずれか１つに記載のロボット制御方法。
【請求項１７】
上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の各差分値に基づいて、上記各関節駆動軸の推測補正値を算出することを特徴とする請求項１３乃至１５のうちのいずれか１つに記載のロボット制御方法。
【請求項１８】
上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された補正値を、上記推測補正値とすることを特徴とする請求項１３乃至１５のうちのいずれか１つに記載のロボット制御方法。
【請求項１９】
上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して所定の関数を当てはめ、当該当てはめられた関数を用いて上記各関節駆動軸の推測補正値を算出することを特徴とする請求項１３乃至１５のうちのいずれか１つに記載のロボット制御方法。
【請求項２０】
上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して予め設定された所定の重みを用いて、上記各補正値の加重平均値を算出し、当該加重平均値を上記推測補正値とすることを特徴とする請求項１３乃至１５のうちのいずれか１つに記載のロボット制御方法。
【請求項２１】
上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする請求項１３乃至２０のうちのいずれか１つに記載のロボット制御方法。
【請求項２２】
少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御ステップを含むロボット制御方法において、
上記制御ステップは、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とするロボット制御方法。
【請求項２３】
上記制御ステップは、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出することを特徴とする請求項２２記載のロボット制御方法。
【請求項２４】
上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする請求項２２又は２３記載のロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの制御装置及び方法に関する。
【背景技術】
【０００２】
特許文献１に記載の従来技術に係るロボット制御装置は、ロボットのアームの各駆動軸の回転量を示す各軸値を入力する入力手段と、入力手段によって入力された各軸値を、直交座標系におけるロボットのアーム先端の位置およびロボットの姿勢を示す位置姿勢値に順変換する順変換手段と、順変換手段によって順変換された位置姿勢値を、ロボット固有の誤差に基づいて補正する補正手段と、補正手段によって補正された位置姿勢値を、各軸値に逆変換する逆変換手段と、逆変換手段によって逆変換された各軸値をロボットに指示する指示手段とを備える。これにより、ロボットの各軸値による教示に対してもロボットの位置決めを精度高く制御することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１５９３６１号公報。
【非特許文献】
【０００４】
【非特許文献１】岡田拓史ほか、「多関節ロボット機構誤差補正方式」、日本機械学会論文集（Ｃ編）、５１巻、第４６２号、３２４頁−３３１頁、昭和６０年２月。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術に係る多関節ロボットにおいては、当該多関節ロボットの直交座標系における位置及び姿勢を示す位置姿勢値を各関節の駆動軸の回転量（以下、軸値という。）のデータに一意に逆変換できない特異点とよばれる位置が存在することが知られている。しかしながら、特許文献１には、補正手段によって補正された位置姿勢値を各軸値に逆変換できない場合の動作については記載されていない。このため、特異点では、ロボットを停止させるか、補正前の位置姿勢値に基づいてロボットを運転させるなどの制御を行う必要があった。このため、多関節ロボットを連続経路制御（以下、ＣＰ（Ｃｏｎｔｉｎｕｏｕｓ  Ｐａｔｈ）制御という。）することにより、スポット溶接、アーク溶接又はレーザ加工などの軌道の制御が必要とされる動作を行わせているときに、特異点では軌道が急激に変化してしまうという課題があった。また、特異点の近傍でＣＰ制御からＰＴＰ（Ｐｏｉｎ  ｔｏ  Ｐｏｉｎｔ）制御に切り換えた場合、ＰＴＰ制御を行っている間はロボットの軌道を所望の軌道に一致させることができないという課題があった。
【０００６】
本発明の目的は以上の問題点を解決し、補正された位置姿勢値を一意の各軸値に逆変換できない特異点において、ロボットの位置決め精度を従来技術に比較して向上できるロボット制御装置及び方法を提供することにある。
【課題を解決するための手段】
【０００７】
第１の発明に係るロボット制御装置は、少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御手段を備えたロボット制御装置において、
上記制御手段は、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換し、上記各補正軸指令値から上記補正前の各軸指令値を減算することにより各関節駆動軸の補正値を算出して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とする。
【０００８】
上記ロボット制御装置において、上記制御手段は、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出することを特徴とする。
【０００９】
また、上記ロボット制御装置において、上記制御手段は、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングにおいて、当該制御タイミングが上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるか否かを判断し、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングが、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるときは、上記補正位置姿勢指令値を逆変換して得られる各軸指令値から上記各軸指令値を減算し、当該減算結果の補正値及び上記制御タイミングの直前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各補正値に基づいて各関節駆動軸の推測補正値を算出することを特徴とする。
【００１０】
さらに、上記ロボット制御装置において、上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の平均値を、上記推測補正値とすることを特徴とする。
【００１１】
またさらに、上記ロボット制御装置において、上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の各差分値に基づいて、上記各関節駆動軸の推測補正値を算出することを特徴とする。
【００１２】
また、上記ロボット制御装置において、上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された補正値を、上記推測補正値とすることを特徴とする。
【００１３】
さらに、上記ロボット制御装置において、上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して所定の関数を当てはめ、当該当てはめられた関数を用いて上記各関節駆動軸の推測補正値を算出することを特徴とする。
【００１４】
またさらに、上記ロボット制御装置において、上記制御手段は、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して予め設定された所定の重みを用いて、上記各補正値の加重平均値を算出し、当該加重平均値を上記推測補正値とすることを特徴とする。
【００１５】
また、上記ロボット制御装置において、上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする。
【００１６】
第２の発明に係るロボット制御装置は、少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御手段を備えたロボット制御装置において、
上記制御手段は、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とする。
【００１７】
上記ロボット制御装置において、上記制御手段は、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出することを特徴とする。
【００１８】
また、上記ロボット制御装置において、上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする。
【００１９】
第３の発明に係るロボット制御方法は、少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御ステップを含むロボット制御方法において、
上記制御ステップは、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換し、上記各補正軸指令値から上記補正前の各軸指令値を減算することにより各関節駆動軸の補正値を算出して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とする。
【００２０】
上記ロボット制御方法において、上記制御ステップは、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出するとともに、上記各推測補正値を各関節駆動軸の補正値として上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、上記各推測補正値を上記補正前の各軸指令値に加算することにより上記各補正軸指令値を算出することを特徴とする。
【００２１】
また、上記ロボット制御方法において、上記制御ステップは、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングにおいて、当該制御タイミングが上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるか否かを判断し、
上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できる制御タイミングが、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換できない最新の制御タイミングから所定の回数の制御タイミング以内であるときは、上記補正位置姿勢指令値を逆変換して得られる各軸指令値から上記各軸指令値を減算し、当該減算結果の補正値及び上記制御タイミングの直前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各補正値に基づいて各関節駆動軸の推測補正値を算出することを特徴とする。
【００２２】
さらに、上記ロボット制御方法において、上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の平均値を、上記推測補正値とすることを特徴とする。
【００２３】
またさらに、上記ロボット制御方法において、上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値の各差分値に基づいて、上記各関節駆動軸の推測補正値を算出することを特徴とする。
【００２４】
また、上記ロボット制御方法において、上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された補正値を、上記推測補正値とすることを特徴とする。
【００２５】
さらに、上記ロボット制御方法において、上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して所定の関数を当てはめ、当該当てはめられた関数を用いて上記各関節駆動軸の推測補正値を算出することを特徴とする。
【００２６】
またさらに、上記ロボット制御方法において、上記制御ステップは、上記逆変換できないときに、上記制御タイミングの前の複数の制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出するときに、上記記憶手段に格納された各補正値に対して予め設定された所定の重みを用いて、上記各補正値の加重平均値を算出し、当該加重平均値を上記推測補正値とすることを特徴とする。
【００２７】
また、上記ロボット制御方法において、上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする。
【００２８】
第４の発明に係るロボット制御方法は、少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの制御点の位置及び姿勢を、所定の制御タイミング毎に制御する制御ステップを含むロボット制御方法において、
上記制御ステップは、
上記各制御タイミングにおける上記制御点の位置及び姿勢を表す位置姿勢指令値に基づいて、上記各制御タイミングにおいて、
（ａ）上記位置姿勢指令値を上記各関節駆動軸の回転量を表す補正前の各軸指令値に逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、上記位置姿勢指令値を補正して、補正位置姿勢指令値を算出し、
（ｃ）上記補正位置姿勢指令値を上記各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、上記補正位置姿勢指令値を上記各補正軸指令値に逆変換して記憶手段に格納する一方、
（ｃ２）逆変換できないときに、上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納し、
（ｄ）上記各補正軸指令値に従って上記各関節駆動軸を回転させるように制御することを特徴とする。
【００２９】
上記ロボット制御方法において、上記制御ステップは、上記逆変換できないときに、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出するとともに上記記憶手段に格納することに代えて、
上記制御タイミングの前の少なくとも１つの制御タイミングにおいて上記記憶手段に格納された各関節駆動軸の補正軸指令値に基づいて、上記制御タイミングにおける各関節駆動軸の補正軸指令値を算出することを特徴とする。
【００３０】
また、上記ロボット制御方法において、上記制御タイミングの前の複数の制御タイミングは、上記制御タイミングの直前の複数の制御タイミングであることを特徴とする。
【発明の効果】
【００３１】
本発明に係るロボット制御装置及び方法によれば、補正位置姿勢指令値を各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、逆変換できるときに、補正位置姿勢指令値を各補正軸指令値に逆変換し、各補正軸指令値から補正前の各軸指令値を減算することにより各関節駆動軸の補正値を算出して記憶手段に格納する一方、逆変換できないときに、制御タイミングの前の少なくとも１つの制御タイミングにおいて記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、各推測補正値を補正前の各軸指令値に加算することにより各補正軸指令値を算出するとともに、各推測補正値を各関節駆動軸の補正値として記憶手段に格納し、各補正軸指令値に従って各関節駆動軸を回転させるように制御するので、補正位置姿勢指令値を一意の各補正軸指令値に逆変換できない特異点において、ロボットの位置決め精度を従来技術に比較して向上できる。
【図面の簡単な説明】
【００３２】
【図１】本発明の第１の実施形態に係るロボット制御装置１と、ロボット７と、コンピュータ５０と、ティーチペンダント５１と、外部記憶装置５２とを備えたロボット制御システムの構成を示すブロック図である。
【図２】図１のロボット７の構成を示す構成図である。
【図３】図１のコントローラ２によって実行されるロボット制御処理を示すフローチャートである。
【図４】図３のステップＳ８において実行される推測補正値算出処理を示すフローチャートである。
【図５】図３のロボット制御処理によって算出される軸指令値θｎｍと、補正軸指令値θｃｎｍと、補正値Ｄｎｍの一例を示すグラフである。
【図６】本発明の第１の実施形態の第１の変形例に係る推測補正値算出処理を示すフローチャートである。
【図７】本発明の第１の実施形態の第２の変形例に係る推測補正値算出処理を示すフローチャートである。
【図８】本発明の第１の実施形態の第３の変形例に係る推測補正値算出処理を示すフローチャートである。
【図９】本発明の第１の実施形態の第４の変形例に係る推測補正値算出処理を示すフローチャートである。
【図１０】本発明の第１の実施形態の第５の変形例に係る推測補正値算出処理を示すフローチャートである。
【図１１】本発明の第２の実施形態に係るロボット制御処理を示すフローチャートである。
【図１２】図１１のステップＳ８６において実行される推測補正値算出処理を示すフローチャートである。
【図１３】図１１のロボット制御処理によって算出される軸指令値θｎｍと、補正軸指令値θｃｎｍと、補正値Ｄｎｍの一例を示すグラフである。
【図１４】本発明の第３の実施形態に係るロボット制御処理を示すフローチャートである。
【図１５】本発明の第４の実施形態に係る現在位置出力処理を示すフローチャートである。
【図１６】本発明の第５の実施形態に係るロボット制御処理を示すフローチャートである。
【発明を実施するための形態】
【００３３】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【００３４】
第１の実施形態．
図１は、本発明の第１の実施形態に係るロボット制御装置１と、ロボット７と、コンピュータ５０と、ティーチペンダント５１と、外部記憶装置５２とを備えたロボット制御システムの構成を示すブロック図であり、図２は、図１のロボット７の構成を示す構成図である。図１において、本実施形態に係るロボット制御装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にてなるコントローラ２と、メモリ３と、インターフェース回路４と、駆動装置５と、測定装置６とを備えて構成される。
【００３５】
ここで、詳細後述するように、ロボット制御装置１は、複数の関節駆動軸を介して複数のリンク１１〜１６が連結してなる多関節ロボット（ロボットアームともいう。）７の制御点Ａの制御タイミングＴｍにおける位置及び姿勢を表す位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍに基づいて、各制御タイミングＴｍにおいて、
（ａ）位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを各関節駆動軸の回転量を表す補正前の各軸指令値θｎｍに逆変換し、
（ｂ）所定の位置姿勢を指示したときの実際の位置姿勢におけるロボット固有の誤差に基づいて、位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを補正して、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを算出し、
（ｃ）補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを各関節駆動軸の回転量を表す各補正軸指令値θｃｎｍに逆変換できるか否かを判断し、
（ｃ１）逆変換できるときに、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを各補正軸指令値θｃｎｍに逆変換し、各補正軸指令値θｃｎｍから補正前の各軸指令値θｎｍを減算することにより各関節駆動軸の補正値Ｄｎｍを算出してメモリ３に格納する一方、
（ｃ２）逆変換できないときに、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された各関節駆動軸の補正値Ｄｎｍに基づいて各関節駆動軸の推測補正値ＤＰｎｍを算出し、各推測補正値ＤＰｎｍを補正前の各軸指令値θｎｍに加算することにより各補正軸指令値θｃｎｍを算出するとともに、各推測補正値ＤＰｎｍを各関節駆動軸の補正値Ｄｎｍとしてメモリ３に格納し、
（ｄ）各補正軸指令値θｃｎｍに従って各関節駆動軸を回転させるように制御することを特徴としている。
【００３６】
図２において、ロボット７は６軸多関節ロボットであって、基柱１０と、リンク１１〜１６と、回転関節Ｊ１，Ｊ４，Ｊ６と、旋回関節Ｊ２，Ｊ３，Ｊ５と、ハンド１７とを備えて構成される。ここで、基柱１０の一端は基台９に対して鉛直に固定され、他端は関節Ｊ１に連結されている。また、リンク１１の各端部は関節Ｊ１及びＪ２に連結され、リンク１２の各端部は関節Ｊ２及びＪ３に連結され、リンク１３の各端部は関節Ｊ３及びＪ４に連結され、リンク１４の各端部は関節Ｊ４及びＪ５に連結され、リンク１５の各端部は関節Ｊ５及びＪ６に連結されている。さらに、リンク１６の一端は関節Ｊ６に連結され、リンク１６の他端Ａ（以下、制御点Ａという。）はハンド１７に連結されている。制御点Ａに設けられたハンド１７には、例えば、溶接トーチ又は把持ハンドなどの所定のツールが取り付けられる。ここで、図２に示すように、ロボット７の作業原点Ｏ（基柱１０の基台９への固定位置である。）を右手系の直交座標系の原点とし、基台９に直交する方向をＺ方向とする。
【００３７】
図１において、コンピュータ５０は、ロボット７の各教示点における制御点Ａの位置及びハンド１７の姿勢を表す所定の教示データとハンド１７の移動速度とに基づいてＣＰ制御を行うことにより、各教示点間において制御点Ａが直線を描くようにロボット７の各制御タイミングＴｍ（ｍ＝１，２，…，Ｍ）毎に制御点Ａの位置及びハンド１７の姿勢を算出する。そして、コンピュータ５０は、各制御タイミングＴｍにおける制御点Ａの位置及びハンド１７の姿勢を表す位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを含む制御データをロボット制御装置１に出力する。ここで、制御タイミングＴｍにおける位置姿勢指令値Ｐ１ｍ、Ｐ２ｍ及びＰ３ｍは、それぞれ制御点ＡのＸＹＺ座標系におけるＸ座標、Ｙ座標及びＺ座標であり、位置姿勢指令値Ｐ４ｍ、Ｐ５ｍ及びＰ６ｍは、それぞれハンド１７のロール角、ピッチ角及びヨー角である。また、ディスプレイ５０ｄは、コンピュータ５０の動作状態の表示及びロボット制御装置１から受信した各データの表示を行う。さらに、入力部５０ｉは、例えばキーボードであり、ロボット制御装置１の動作を制御するための指示コマンドなどを入力するためのものである。また、ティーチペンダント５１は、ハンド１７を人間が把持して目的の位置及び姿勢に移動してロボット７に所定の動作パターンを行わせることにより、ロボット７の各教示点における制御点Ａの位置及びハンド１７の姿勢を表す所定の教示データを取得し、取得された教示データに基づいてコンピュータ５０と同様に制御データを生成するための操作端末である。
【００３８】
インターフェース回路４は、コンピュータ５０、ティーチペンダント５１及び外部記憶装置５２から入力された制御データに対してロボット制御装置１との信号変換などの所定のインターフェース処理を実行してコントローラ２に出力する一方、コントローラ２から入力されたデータに対してコンピュータ５０、ティーチペンダント５１及び外部記憶装置５２との信号変換などの所定のインターフェース処理を実行してコンピュータ５０に出力する。さらに、コントローラ２は、ロボット制御装置１の全体の動作を制御するとともに、位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍをメモリ３に格納し、当該格納された位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍに基づいて、詳細後述するロボット制御処理によって各制御タイミングＴｍにおける各関節Ｊｎ（ｎ＝１，２，…，６）の駆動軸の回転量である補正軸指令値θｃｎｍを算出し、駆動装置５に出力する。駆動装置５は各関節Ｊｎの駆動軸を回転させるためのアクチュエータであり、コントローラ２からの補正軸指令値θｃｎｍに従って、各関節Ｊｎの駆動軸を回転させる。メモリ３は、コントローラ２によって実行される種々のソフトウェアのプログラムを予め格納する。また、測定装置６は、各関節Ｊｎ毎に設けられた角度センサであって、各関節Ｊｎの実際の軸値を各制御タイミングＴｍにおいて測定し、当該測定された軸値をコントローラ２に出力する。
【００３９】
次に、コントローラ２によって実行されるロボット制御処理を説明する。図３は、図１のコントローラ２によって実行されるロボット制御処理を示すフローチャートであり、図４は、図３のステップＳ８において実行される推測補正値算出処理を示すフローチャートである。図３において、始めに、ステップＳ１において、各制御タイミングＴｍにおける位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍがメモリ３から読み出され、ステップＳ２において、パラメータｍが初期値１に設定される。そして、コントローラ２は、ステップＳ３において、制御タイミングＴｍにおける位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを各関節Ｊｎの駆動軸の回転量である軸指令値θｎｍに逆変換する。なお、コントローラ２は、位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを軸指令値θｎｍに逆変換できなかったときは、所定のエラー処理を行いロボット７の動作を停止させるように駆動装置５を制御し、ロボット制御処理を終了する。
【００４０】
引き続き、コントローラ２は、ステップＳ４において、非特許文献１に記載の「多関節ロボット機構誤差補正方式」を用いて各位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを補正して、当該補正後の補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを算出する。ここで、多関節ロボット機構誤差補正方式は、制御点Ａの位置を所定の位置に移動させかつハンド１７を所定の姿勢をとるように制御したときの、制御点Ａの実際の位置及びハンド１７の実際の姿勢からのズレを補正するものである。このようなズレは、ロボット７に固有のたわみ、加工誤差、及び組立誤差などに基づく機構誤差、据付誤差、ならびに各軸の機械原点の誤差に起因する。以下、このような誤差補正方式による補正を、高精度ロボットモデルによる補正という。
【００４１】
次に、ステップＳ５において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できるか否かが判断され、ＹＥＳのときはステップＳ６に進む一方、ＮＯのときはステップＳ８に進む。ここで、コントローラ２は、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換するための連立方程式の判別式を用いて、ステップＳ５における判断を行う。
【００４２】
ステップＳ６において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍは補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換され、ステップＳ７において、補正軸指令値θｃｎｍから補正前の軸指令値θｎｍを減算することにより、各関節Ｊｎに対する制御タイミングＴｍにおける各補正値Ｄｎｍが算出される。そして、ステップＳ１１に進む。
【００４３】
一方、ステップＳ８において、各関節Ｊｎ毎に、図４の「推測補正値算出処理」によって推測補正値ＤＰｎｍが推測される。図４の推測補正値算出処理では、ステップＳ２１において、制御タイミングＴｍ−１，Ｔｍ−２，Ｔｍ−３においてメモリ３に格納された補正値Ｄｎｍ−１，補正値Ｄｎｍ−２及び補正値Ｄｎｍ−３の平均値Ｄａｖｅが算出され、ステップＳ２２において、推測補正値ＤＰｎｍが平均値Ｄａｖｅに設定され、ロボット制御処理に戻る。そして、図３のステップＳ９において、各関節Ｊｎの補正値Ｄｎｍが推測補正値ＤＰｎｍに設定され、ステップＳ１０において、補正前の軸指令値θｎｍに補正値Ｄｎｍを加算することにより、補正軸指令値θｃｎｍが算出され、ステップＳ１１に進む。
【００４４】
ステップＳ１１では、各関節Ｊｎの補正値Ｄｎｍはメモリ３に格納され、ステップＳ１２において、コントローラ２は、補正軸指令値θｃｎｍに基づいてロボット７を動作させるようにロボット駆動装置５を制御する。次に、ステップＳ１３において、制御タイミングＴｍが最後の制御タイミングＴＭより前の制御タイミングであるか否かが判断され、ＹＥＳのときはロボット制御処理を終了し、ＮＯのときはステップＳ１４においてパラメータｍに１を加算してステップＳ３に戻る。
【００４５】
なお、制御タイミングＴ２又はＴ３において補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できなかった場合には、直前の１つ又は２つの制御タイミングにおいてメモリ３に格納された各補正値Ｄｎｍを用いて図４の推測補正値算出処理を行う。制御タイミングＴ１において補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できなかった場合には、ロボット制御処理を終了する。
【００４６】
図５は、図３のロボット制御処理によって算出される軸指令値θｎｍと、補正軸指令値θｃｎｍと、補正値Ｄｎｍの一例を示すグラフである。図５において、制御タイミングＴ１〜Ｔ４では、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換可能であり、図３のステップＳ５においてＹＥＳであると判断されている。しかしながら、制御タイミングＴ５及びＴ６では、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに変換不可能であり、図３のステップＳ５においてＮＯであると判断されている。このため、例えば、制御タイミングＴ５では、制御タイミングＴ２，Ｔ３，Ｔ４においてメモリ３に格納された各補正値Ｄｎ２，Ｄｎ３，Ｄｎ４の平均値であるＤＰｎ５が補正値Ｄｎ５として用いられている。
【００４７】
以上詳述したように、本実施形態によれば、制御タイミングＴｍにおいて補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できないときにも、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された補正値に基づいて制御タイミングＴｍにおける補正値Ｄｎｍを推測して補正軸指令値θｃｎｍを算出する。従って、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できない特異点においても、従来技術に比較してロボット７の軌跡が急激に変化することなく、位置決め精度を向上できる。
【００４８】
なお、本実施形態において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できないときに、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍを用いて推測補正値ＤＰｎｍを算出した。しかしながら、本発明はこれに限られず、制御タイミングＴｍの直前の複数の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍを用いて推測補正値ＤＰｎｍを算出すればよい。
【００４９】
第１の実施形態の第１の変形例．
図６は、本発明の第１の実施形態の第１の変形例に係る推測補正値算出処理を示すフローチャートである。図６のステップＳ３１において、メモリ３に格納された補正値Ｄｎｍ−３から補正値Ｄｎｍ−２を減算して差分値ＤＤ１を算出し、ステップＳ３２において、メモリ３に格納された補正値ＤＤｎｍ−２から補正値ＤＤｎｍ−１を減算して差分値ＤＤ２を算出する。そして、ステップＳ３３において、差分値ＤＤ３から差分値ＤＤ１を減算して差分値ＤＤ３を算出する。さらに、ステップＳ３４において、メモリ３に格納された補正値Ｄｎｍ−１に差分値ＤＤ３を加算することにより、制御タイミングＴｍにおける関節Ｊｎの軸値の推測補正値ＤＰｎｍを算出し、図３のロボット制御処理に戻る。本変形例によれば、制御タイミングＴｍにおいて補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに変換できないときに、直前の制御タイミングＴｍ−３，Ｔｍ−２，Ｔｍ−１においてメモリ３に格納された各補正値Ｄｎｍ−３，Ｄｎｍ−２，Ｄｎｍ−１の各差分値ＤＤ１及びＤＤ２を用いて推測補正値ＤＰｎｍを算出するので、第１の実施形態と同様の効果を奏する。
【００５０】
なお、本変形例において、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍの各差分値ＤＤ１及びＤＤ２を用いて推測補正値ＤＰｎｍを算出した。しかしながら、本発明はこれに限られず、制御タイミングＴｍの直前の３回以上の複数の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍの各差分値を用いて推測補正値ＤＰｎｍを算出すればよい。
【００５１】
第１の実施形態の第２の変形例．
図７は、本発明の第１の実施形態の第２の変形例に係る推測補正値算出処理を示すフローチャートである。図７のステップＳ４１において、メモリ３に格納された補正値Ｄｎｍ−１を推測補正値ＤＰｎｍとし、図３のロボット制御処理に戻る。本変形例によれば、制御タイミングＴｍにおいて補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに変換できないときに、直前の制御タイミングＴｍ−１においてメモリ３に格納された補正値Ｄｎｍ−１を推測補正値ＤＰｎｍとするので、第１の実施形態に比較して短時間で推測補正値ＤＰｎｍを推測できる。
【００５２】
第１の実施形態の第３の変形例．
図８は、本発明の第１の実施形態の第３の変形例に係る推測補正値算出処理を示すフローチャートである。図８のステップＳ５１において、メモリ３に格納された制御タイミングＴｍの直前の所定の数の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍに対して所定の関数を当てはめ、当該当てはめられた関数を用いて推測補正値ＤＰｎｍを算出し、図３のロボット制御処理に戻る。具体的には、例えば、制御タイミングＴｍの直前の５個の制御タイミングＴｍ−５〜Ｔｍ−１においてメモリ３に格納された各補正値Ｄｎｍ−５〜Ｄｎｍ−１に対して３次関数を当てはめ、当該当てはめられた３次関数を用いて制御タイミングＴｍにおける推測補正値ＤＰｎｍを算出する。本変形例によれば、制御タイミングＴｍにおいて補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに変換できないときに、直前の所定の数の制御タイミングにおいてメモリ３に格納された各補正値Ｄｎｍを用いて推測補正値ＤＰｎｍを算出するので、第１の実施形態と同様の効果を奏する。
【００５３】
第１の実施形態の第４の変形例．
図９は、本発明の第１の実施形態の第４の変形例に係る推測補正値算出処理を示すフローチャートである。図９のステップＳ６１において、Ｗ１＞Ｗ２＞Ｗ３となるように予め設定された重みＷ３，Ｗ２，Ｗ１を用いて、メモリ３に格納された補正値Ｄｎｍ−３〜Ｄｎｍ−１の加重平均値Ｄａｖｅｗ１を算出する。具体的には、重みＷ１，Ｗ２，Ｗ３は、それぞれ、０．５，０．３，０．２に予め設定される。そして、ステップＳ６２において、加重平均値Ｄａｖｅｗ１を推測補正値ＤＰｎｍとして図３のロボット制御処理に戻る。本変形例によれば、制御タイミングＴｍに近い制御タイミングに対してより大きい重みＷｍを与えて加重平均値Ｄａｖｅｗ１を算出するので、第１の実施形態に比較して、精度良く推測補正値ＤＰｎｍを推測できる。
【００５４】
なお、本変形例において、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍを用いて推測補正値ＤＰｎｍを算出した。しかしながら、本発明はこれに限られず、制御タイミングＴｍの直前の複数の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍを用いて推測補正値ＤＰｎｍを算出すればよい。
【００５５】
第１の実施形態の第５の変形例．
図１０は、本発明の第１の実施形態の第５の変形例に係る推測補正値算出処理を示すフローチャートである。本変形例では、図３のステップＳ１１において、各関節Ｊｎの補正値Ｄｎｍをメモリ３に格納するときに、当該補正値Ｄｎｍが図３のステップＳ７の処理によって算出されたか推測補正値算出処理によって算出されたかを示すフラグをともに格納する。図１０のステップＳ７１において、ステップＳ７の処理によって算出された補正値が推測補正値算出処理によって推測された補正値に対する重みよりも大きくなるように予め設定された重みＷ３，Ｗ２，Ｗ１を用いて、メモリ３に格納された補正値Ｄｎｍ−３〜Ｄｎｍ−１の加重平均値Ｄａｖｅｗ２を算出する。具体的には、ステップＳ７の処理によって算出された補正値に対する重みは推測補正値算出処理によって推測された補正値に対する重みの２倍の値に予め設定される。そして、ステップＳ７２において、加重平均値Ｄａｖｅｗ２を推測補正値ＤＰｎｍとして図３のロボット制御処理に戻る。本変形例によれば、ステップＳ７の処理によって算出された補正値に対する重みを推測補正値算出処理によって推測された補正値に対する重みより大きく設定されるので、第１の実施形態に比較して、精度良く推測補正値ＤＰｎｍを推測できる。
【００５６】
なお、本変形例において、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍを用いて推測補正値ＤＰｎｍを算出した。しかしながら、本発明はこれに限られず、制御タイミングＴｍの直前の複数の制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍを用いて推測補正値ＤＰｎｍを算出すればよい。
【００５７】
第２の実施形態．
図１１は、本発明の第２の実施形態に係るロボット制御処理を示すフローチャートであり、図１２は、図１１のステップＳ８６において実行される推測補正値算出処理を示すフローチャートである。本実施形態に係るロボット制御処理は、第１の実施形態に係るロボット制御処理に比較して、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを各補正軸指令値θｃｎｍに逆変換できる制御タイミングＴｍにおいて、当該制御タイミングＴｍが補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを各補正軸指令値θｃｎｍに逆変換できない最新の制御タイミングから３回の制御タイミング以内であるか否かを判断し、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを各補正軸指令値θｃｎｍに逆変換できる制御タイミングが、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを各補正軸指令値θｃｎｍに逆変換できない最新の制御タイミングから３回の制御タイミング以内であるときは、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを逆変換して得られる各軸指令値θｃｔｎｍから各軸指令値θｎｍを減算し、当該減算結果の仮の補正値Ｄｔｎｍ及び制御タイミングＴｍの直前の２つの制御タイミングＴｍ−１，Ｔｍ−２においてメモリ３に格納された各補正値Ｄｔｎｍ−１，Ｄｔｍ−２に基づいて各関節駆動軸の推測補正値ＤＰｎｍを算出することを特徴している。
【００５８】
図１１において、始めに、ステップＳ１において、各制御タイミングＴｍにおける位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍがメモリ３から読み出される。そして、ステップＳ８１においてパラメータｋが初期値０に設定され、ステップＳ２において、パラメータｍが初期値１に設定される。そして、コントローラ２は、ステップＳ３において、制御タイミングＴｍにおける位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを各関節Ｊｎの駆動軸の回転量である軸指令値θｎｍに逆変換する。なお、コントローラ２は、位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを軸指令値θｎｍに逆変換できなかったときは、所定のエラー処理を行いロボット７の動作を停止させるように駆動装置５を制御し、ロボット制御処理を終了する。
【００５９】
引き続き、コントローラ２は、ステップＳ４において、高精度ロボットモデルによって各位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを補正して、当該補正後の補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを算出する。次に、ステップＳ５において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できるか否かが判断され、ＹＥＳのときはステップＳ８２に進む一方、ＮＯのときはステップＳ８４に進みパラメータｋが０に設定され、関節Ｊｎ毎に、図４の「推測補正値算出処理」によって推測補正値ＤＰｎｍが推測されてステップＳ９に進む。
【００６０】
ステップＳ８２では、パラメータｋに１が加算される。そして、ステップＳ８３において、パラメータｋが３以下であるか否かが判断され、ＹＥＳのときはステップＳ８６に進む一方、ＮＯのときはステップＳ６に進む。ステップＳ６において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍは補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換され、ステップＳ７において、補正軸指令値θｃｎｍから軸指令値θｎｍを減算することにより、各関節Ｊｎに対する制御タイミングＴｍにおける各補正値Ｄｎｍが算出される。そして、ステップＳ１１に進む。
【００６１】
ステップＳ８６では、関節Ｊｎ毎に、図１２の「推測補正値算出処理」によって推測補正値ＤＰｎｍが推測される。具体的には、図１２のステップＳ２０１において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを仮の補正軸指令値θｃｔ１ｍ〜θｃｔ６ｍに逆変換する。そして、ステップＳ２０２において、仮の補正軸指令値θｃｎｍから軸指令値θｎｍを減算することにより、各関節Ｊｎに対する仮の補正値Ｄｔｎｍを算出する。さらに、ステップＳ２０３において、仮の補正値Ｄｔｎｍならびに補正値Ｄｎｍ−１及びＤｎｍ−２
の平均値Ｄａｖｅ１を算出し、ステップＳ２０４において、算出された平均値Ｄａｖｅ１を推測補正値ＤＰｎｍとして、ロボット制御処理に戻る。
【００６２】
ステップＳ９では、各関節Ｊｎの補正値Ｄｎｍが推測補正値ＤＰｎｍに設定され、ステップＳ１０において、軸指令値θｎｍに補正値Ｄｎｍを加算することにより補正軸指令値θｃｎｍが算出され、ステップＳ１１に進む。
【００６３】
ステップＳ１１では、各関節Ｊｎの補正値Ｄｎｍはメモリ３に格納され、ステップＳ１２において、コントローラ２は、補正軸指令値θｃｎｍに基づいてロボット７を動作させるようにロボット駆動装置５を制御する。次に、ステップＳ１３において、制御タイミングＴｍが最後の制御タイミングＴＭより前の制御タイミングであるか否かが判断され、ＹＥＳのときはロボット制御処理を終了し、ＮＯのときはステップＳ１４においてパラメータｍに１を加算してステップＳ３に戻る。
【００６４】
図１３は、図１１のロボット制御処理によって算出される軸指令値θｎｍと、補正軸指令値θｃｎｍと、補正値Ｄｎｍの一例を示すグラフである。図１３において、制御タイミングＴ１〜Ｔ４及びＴ７〜Ｔ１０では、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換可能であり、図３のステップＳ５においてＹＥＳであると判断されている。しかしながら、制御タイミングＴ５及びＴ６では、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに変換不可能であり、図３のステップＳ５においてＮＯであると判断されている。このため、例えば、制御タイミングＴ５では、制御タイミングＴ２，Ｔ３，Ｔ４における各補正値Ｄｎ２，Ｄｎ３，Ｄｎ４の平均値であるＤＰｎ５が補正値Ｄｎ５として用いられている。また、制御タイミングＴ７，Ｔ８，Ｔ９は、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できない状態から逆変換できる状態に変化した後の３回以内の各制御タイミングである。このため、図１２の推測補正値算出処理によって推測補正値ＤＰｎｍが算出されている。さらに、制御タイミングＴ１０は、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できない状態から逆変換できる状態に変化した後の４回目の制御タイミングであるので、推測補正値算出処理は行われていない。
【００６５】
以上詳述したように、本実施形態によれば、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できない状態から逆変換できる状態に変化した後の３回以内の各制御タイミングにおいて、図１２の推測補正値算出処理によって推測補正値ＤＰｎｍを算出した。従って、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できない状態から逆変換できる状態に変化したときに、第１の実施形態に比較して、補正軸指令値θｃｎｍの変化が小さくなり、ハンド１７を滑らかに動作させて位置決め精度を向上できる。
【００６６】
なお、本実施形態において、図１２の推測補正値算出処理によって補正値を推測した。しかしながら、本発明はこれに限られず、制御タイミングＴｍにおける仮の補正値Ｄｔｎｍならびに制御タイミングＴｍの直前の少なくとも１つの制御タイミングにおいてメモリ３に格納された補正値Ｄｎｍを用いて、第１の実施形態の第１乃至第５の変形例に係る推測補正値算出処理と同様の推測補正値算出処理によって推測補正値ＤＰｎｍを算出してもよい。また、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できない状態から逆変換できる状態に変化した制御タイミングＴｍの直前の３回の制御タイミングＴｍ−１，Ｔｍ−２，Ｔｍ−３においてメモリ３に格納された補正値ＤＰｎｍを用いて、第１の実施形態又は第１の実施形態の第１乃至第５の変形例に係る推測補正値算出処理によって推測補正値ＤＰｎｍを算出してもよい。
【００６７】
第３の実施形態．
上述した各実施形態及び各変形例において、コンピュータ５０は、各制御タイミングＴｍにおける制御点Ａの位置及びハンド１７の姿勢を表す位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを含む制御データをロボット制御装置１に出力した。本実施形態において、コンピュータ５０は、以下の３つの制御データＤａ，Ｄｂ及びＤｃのうちの１つの制御データをロボット制御装置１に出力する。
【００６８】
（１）制御データＤａ．
各制御タイミングＴｍにおける制御点Ａの位置及びハンド１７の姿勢を表す位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを含む。
（２）制御データＤｂ．
各制御タイミングＴｍにおける、ロボット７の固有の誤差に起因する位置ずれの補正が必要な各関節Ｊｎの軸指令値θａｎｍを含む。
（３）制御データＤｃ．
各制御タイミングＴｍにおける、ロボット７の固有の誤差に起因する位置ずれの補正が不要な各関節Ｊｎの軸指令値θｎｍを含む。
【００６９】
ここで、各関節Ｊｎの補正が不要な補正軸指令値θｃｎｍは、ロボット７に固有の誤差に起因する位置のズレが考慮された軸値であり、具体的には、ティーチペンダント５１を使用してロボット７を目的の位置及び姿勢に直接的に移動させて教示し、あるいはハンド１７を人間が把持して目的の位置及び姿勢に移動して教示し、教示した位置及び姿勢を計測することによって得られた各関節Ｊｎの各軸値を測定することによって得られる。
【００７０】
図１４は、本発明の第３の実施形態に係るロボット制御処理を示すフローチャートである。ステップＳ９１において、メモリ３内の制御データが、各制御タイミングＴｍにおける位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍを含むか否かが判断され、ＹＥＳのときはステップＳ９２において図３のロボット制御処理が実行されてロボット制御処理を終了する一方、ＮＯのときはステップＳ９３に進む。ステップＳ９３において、メモリ３内の制御データが、各制御タイミングＴｍにおける補正が必要な軸指令値θａｎｍを含むか否かが判断され、ＹＥＳのときはステップＳ９４に進む一方、ＮＯのときはステップＳ９５に進む。
【００７１】
ステップＳ９４では、ロボット７には誤差が無いと仮定して、軸指令値θａｎｍを直交座標系における位置姿勢指令値Ｐ１ｍ〜Ｐ６ｍに順変換し、ステップＳ９２に進む。一方、ステップＳ９５において、補正が不要な軸指令値θｎｍに基づいてロボット７を動作させるようにロボット駆動装置５を制御してロボット制御処理を終了する。
【００７２】
本実施形態によれば、第１の実施形態に比較して、コンピュータ５０から制御データＤａ、Ｄｂ及びＤｃのうちのどの制御データが入力されても、ロボット７の固有の誤差に基づいて補正された補正軸指令値θｃｎｍに従ってロボット７の動作を制御できる。特に、制御データＤｃが入力される場合、各駆動軸のメカストッパおよびソフトリミットが指示通りに作用するので、各軸の動作領域の限界を確実に把握したい場合に有効である。
【００７３】
さらに、例えば、ロボット７の動作範囲の限界近くで誤差に基づく補正量が適正でないために、あるいはオフラインでの制御データ作成のときに回避すべきケーブルなどのデータが漏れていたために、一部の制御データに対して、人間による直接的な教示が行われることがある。オフラインによる制御データが、人間によって修正されると、オフラインによる制御データと、人間による直接教示の制御データとが混在することになる。本実施形態によれば、制御データＤｂ及び制御データＤｃを用いることができるので、オフラインの教示データが人間による教示によって修正を加えられても、従来技術に比較してロボット７の位置決め精度を向上できる。
【００７４】
第４の実施形態．
図１５は、本発明の第４の実施形態に係る現在位置出力処理を示すフローチャートである。コントローラ２は、第１又は第２の実施形態に係るロボット制御処理と同期して、各制御タイミングＴｍにおいて現在位置出力処理を行う。図１５のステップＳ３０１において、コントローラ２は、測定装置６により各関節Ｊｎの軸値のタイミングＴｍにおける測定値αｎを取得する。そして、ステップＳ３０２において、コンピュータ５０からの指示コマンドに従って、取得した測定値αｎを逆補正するか否かを判断し、ＹＥＳのときはステップＳ３０３に進む一方、ＮＯのときはステップＳ３０７に進む。ここで、逆補正とは、測定値αｎからロボット制御処理のステップＳ７又はＳ９において算出された補正値Ｄｎｍを差し引くことをいう。ステップＳ３０７では、測定値αｎをコンピュータ５０に出力して、現在位置出力処理を終了する。一方、ステップＳ３０３では、測定値αｎからメモリ３に格納された補正値Ｄｎｍを減算することにより逆補正された軸値θＤｎが算出され、ステップＳ３０４に進む。ステップＳ３０４において、コンピュータ５０からの指示コマンドに従って、ロボット７の現在位置を各軸値として出力するか否かが判断され、ＹＥＳのときはステップＳ３０６に進む一方、ＮＯのときはステップＳ３０５に進む。ステップＳ３０６において、逆補正された軸値θＤｎをコンピュータに出力して、現在位置出力処理を終了する。また、ステップＳ３０５において、逆補正された軸値θＤｎは表示用位置姿勢値ＰＤｎに順変換されてコンピュータ５０に出力され、現在位置出力処理を終了する。コンピュータ５０は、ロボット制御装置１からの軸値の測定値αｎ、逆補正された軸値θＤｎ又は表示用位置姿勢値ＰＤｎをディスプレイ５０ｄに出力して表示する。
【００７５】
本実施形態によれば、制御タイミングＴｍにおいて計測された軸値αｎをメモリ３に格納された補正値Ｄｎｍを用いて逆補正して出力することができる。
【００７６】
第５の実施形態．
図１６は、本発明の第５の実施形態に係るロボット制御処理を示すフローチャートである。本実施形態に係るロボット制御処理は、第２の実施形態に係るロボット制御処理（図１１参照。）に比較して、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを各関節駆動軸の回転量を表す各補正軸指令値θｃｎｍに逆変換できるか否かを判断し、逆変換できるときに、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを上記各補正軸指令値θｃｎｍに逆変換してメモリ３に格納する一方、逆変換できないときに、上制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された各関節駆動軸の補正軸指令値θｃｎｍに基づいて、制御タイミングＴｍにおける各関節駆動軸の補正軸指令値θｃｎｍを算出するとともにメモリ３に格納したことを特徴としている。具体的には、図１６のロボット制御処理は、図１１のステップＳ８４及びＳ８６における各処理をステップＳ１０１及びＳ１０４における各処理にそれぞれ置き換え、ステップＳ９，Ｓ１０における各処理をステップＳ１０２における処理に置き換え、ステップＳ１１における処理をステップＳ１０３における処理に置き換えたものである。
【００７７】
ステップＳ５において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できないと判断されたときには、ステップＳ１０１の処理が実行される。ステップＳ１０１において、各関節Ｊｎ毎に、制御タイミングＴｍの直前の３回の制御タイミングＴｍ−３，Ｔｍ−２，Ｔｍ−１においてメモリ３に格納された各補正軸指令値θｃｎｍ−３，θｃｎｍ−２，θｃｎｍ−１に基づいて推測補正軸指令値θＰｎｍを推測し、ステップＳ１０２に進む。具体的には、補正軸指令値θｃｎｍ−３，θｃｎｍ−２，θｃｎｍ−１の平均値を推測補正軸指令値θＰｎｍとする。
【００７８】
また、ステップＳ８３において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できない状態から逆変換できる状態に変化した後の３回以内の各制御タイミングであると判断されたときには、補正位置姿勢指令値Ｐｃｎｍと、補正軸指令値θｃｎｍ−２と、補正軸指令値θｃｎｍ−１とに基づいて、各関節Ｊｎ毎に推測補正軸指令値θＰｎｍを推測して、ステップＳ１０２に進む。具体的には、補正位置姿勢指令値Ｐｃｎｍを仮の補正軸指令値θｔ１ｎｍに逆変換し、各関節毎Ｊｎ毎に、仮の補正軸指令値θｔ１ｎｍと、補正軸指令値θｃｎｍ−２と、補正軸指令値θｃｎｍ−１との平均値を推測補正軸指令値θＰｎｍとする。
【００７９】
ステップＳ１０２において、軸補正指令値θｃｎｍを推測補正軸指令値θＰｎｍに設定する。また、図１１のステップＳ１１に代えて、ステップＳ１０３において、各関節Ｊｎの補正軸指令値θｃｎｍをメモリ３に格納する。本実施形態は、第２の実施形態と同様の効果を奏する。
【００８０】
なお、ステップＳ１０１において、各関節Ｊｎ毎に、制御タイミングＴｍの直前の３回の制御タイミングＴｍ−３，Ｔｍ−２，Ｔｍ−１においてメモリ３に格納された各補正軸指令値θｃｎｍ−３，θｃｎｍ−２，θｃｎｍ−１の平均値を推測補正軸指令値θＰｎｍとした。しかしながら、本発明はこれに限られず、制御タイミングＴｍの直前の少なくとも１つの制御タイミングにおいてメモリ３に格納された各補正軸指令値に基づいて、例えば、第１の実施形態の第１乃至第５の変形例に係る推測補正値算出処理と同様の演算を行って、推測補正軸指令値θＰｎｍを算出すればよい。また、ステップＳ８３においてＹＥＳと判断されたときは、制御タイミングＴｍにおける仮の補正軸指令値θｔ１ｎｍならびに制御タイミングＴｍの直前の少なくとも１つの制御タイミングにおいてメモリ３に格納された補正軸指令値θｃｎｍを用いて、第１の実施形態の第１乃至第５の変形例に係る推測補正値算出処理と同様の推測補正値算出処理によって推測補正軸指令値θＰｎｍを算出してもよい。
【００８１】
上記各実施形態及び各変形例において、ロボット制御装置１は６軸多関節ロボット７の動作を制御した。しかしながら、本発明はこれに限られず、補正位置姿勢指令値を一意の補正軸指令値に逆変換できない特異点を有する、１軸ロボット、４軸多関節ロボット、５軸多関節ロボット又は７軸多関節ロボットなどの少なくとも１つの関節駆動軸を介して複数のリンクが連結してなるロボットの動作を制御してもよい。
【００８２】
また、上記各実施形態及び各変形例において、コントローラ２は、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換するための連立方程式の判別式を用いて、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できるか否かを判断した。しかしながら、本発明はこれに限られず、関節Ｊ５の軸値の絶対値が０度近傍の値であるか否か、又は、制御点ＡのＸＹＺ座標系における位置がロボット７の可動範囲内であるか否かに基づいて、上記判断を行ってもよい。
【００８３】
さらに、上記各実施形態及び各変形例において、コントローラ２は、コンピュータ５０からの制御データをメモリ３に格納し、格納された制御データに従ってロボット７の動作を制御した。しかしながら、本発明はこれに限られず、上記制御データをティーチペンダント５１又は外部記憶装置５２から読み出してもよい。
【００８４】
またさらに、図３及び図１１のロボット制御処理のステップＳ１１において、各関節Ｊｎの補正値Ｄｎｍをメモリ３に格納したが、本発明はこれに限られず、ステップＳ５において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できると判断されたときにのみ、各関節Ｊｎの補正値Ｄｎｍをメモリ３に格納してもよい。また、図３及び図１１のロボット制御処理において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できないときに、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された各関節駆動軸の補正値Ｄｎｍに基づいて各関節駆動軸の推測補正値ＤＰｎｍを算出した。しかしながら、本発明はこれに限られず、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できないときに、制御タイミングＴｍの前の少なくとも１つの制御タイミングにおいてメモリ３に格納された各関節駆動軸の補正値Ｄｎｍに基づいて各関節駆動軸の推測補正値ＤＰｎｍを算出してもよい。
【００８５】
また、図１６のロボット制御処理のステップＳ１０３において、各関節Ｊｎの補正軸指令値θｃｎｍをメモリ３に格納したが、本発明はこれに限られず、ステップＳ５において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できると判断されたときにのみ、各関節Ｊｎの補正軸指令値θｃｎｍをメモリ３に格納してもよい。さらに、図１６のロボット制御処理において、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できないときに、制御タイミングＴｍの直前の３回の制御タイミングにおいてメモリ３に格納された各関節Ｊｎの補正軸指令値θｃｎｍに基づいて各関節駆動軸の推測補正軸指令値θＰｎｍを算出した。しかしながら、本発明はこれに限られず、補正位置姿勢指令値Ｐｃ１ｍ〜Ｐｃ６ｍを一意の補正軸指令値θｃ１ｍ〜θｃ６ｍに逆変換できないときに、制御タイミングＴｍの前の少なくとも１つの制御タイミングにおいてメモリ３に格納された各関節Ｊｎの補正軸指令値θｃｎｍに基づいて各関節駆動軸の推測補正軸指令値θＰｎｍを算出してもよい。
【産業上の利用可能性】
【００８６】
以上詳述したように、本発明に係るロボット制御装置及び方法によれば、補正位置姿勢指令値を各関節駆動軸の回転量を表す各補正軸指令値に逆変換できるか否かを判断し、逆変換できるときに、補正位置姿勢指令値を各補正軸指令値に逆変換し、各補正軸指令値から補正前の各軸指令値を減算することにより各関節駆動軸の補正値を算出して記憶手段に格納する一方、逆変換できないときに、制御タイミングの前の少なくとも１つの制御タイミングにおいて記憶手段に格納された各関節駆動軸の補正値に基づいて各関節駆動軸の推測補正値を算出し、各推測補正値を補正前の各軸指令値に加算することにより各補正軸指令値を算出するとともに、各推測補正値を各関節駆動軸の補正値として記憶手段に格納し、各補正軸指令値に従って各関節駆動軸を回転させるように制御するので、補正位置姿勢指令値を一意の各補正軸指令値に逆変換できない特異点において、ロボットの位置決め精度を従来技術に比較して向上できる。
【符号の説明】
【００８７】
１…ロボット制御装置、
２…コントローラ、
３…メモリ、
４…インターフェース回路、
５…駆動装置、
６…測定装置、
７…ロボット、
９…基台、
１０…基柱、
１１〜１６…リンク、
１７…ハンド、
５０…コンピュータ、
５０ｄ…ディスプレイ、
５０ｉ…入力部、
５１…ティーチペンダント、
５２…外部記憶装置、
Ａ…制御点、
Ｊ１〜Ｊ６…関節。
【図１】
2010269421.tif 000003
【図２】
2010269421.tif 000004
【図３】
2010269421.tif 000005
【図４】
2010269421.tif 000006
【図５】
2010269421.tif 000007
【図６】
2010269421.tif 000008
【図７】
2010269421.tif 000009
【図８】
2010269421.tif 000010
【図９】
2010269421.tif 000011
【図１０】
2010269421.tif 000012
【図１１】
2010269421.tif 000013
【図１２】
2010269421.tif 000014
【図１３】
2010269421.tif 000015
【図１４】
2010269421.tif 000016
【図１５】
2010269421.tif 000017
【図１６】
2010269421.tif 000018