(57)【要約】  冗長ロボットの操作性を向上させたロボットシステム（１０）及びロボット制御装置（１４）を提供する。  ロボットシステム（１０）は、サーボモータによって駆動され冗長軸を含む複数の関節軸を有するロボット（１２）と、ロボット（１２）を制御するロボット制御装置（１４）とを備え、ロボット制御装置（１４）は、ロボット（１２）の第１の関節角速度指令を生成する第１の指令生成部（１４ａ）と、ロボット（１２）が動作限界となる状態を回避するためのロボット（１２）の関節角速度指令Ａを生成するリミット回避指令生成部（１４ｂ）と、ロボット（１２）の姿勢を最適化するためのロボット（１２）の関節角速度指令Ｂを生成する姿勢最適化指令生成部（１４ｃ）と、制御点に関するヤコビ行列のゼロ空間行列を計算するゼロ空間行列計算部（１４ｄ）と、関節角速度指令Ａ、関節角速度指令Ｂ、及びゼロ空間行列に基づいて、ロボット（１２）の第２の関節角速度指令を生成する第２の指令生成部（１４ｅ）と、サーボモータを制御する制御部（１４ｆ）とを有する。
2013038544.tif 000002
【特許請求の範囲】
【請求項１】
サーボモータによって駆動され、冗長軸を含む複数の関節軸を有するロボットと、
前記ロボットを制御するロボット制御装置とを備え、
前記ロボット制御装置は、入力された前記ロボットの制御点の速度指令に基づいて、前記ロボットの第１の関節角速度指令を生成する第１の指令生成部と、
信号Ａが入力されている間、評価関数Ａに基づいて、前記ロボットが動作限界となる状態を回避するための該ロボットの関節角速度指令Ａを生成するリミット回避指令生成部と、
信号Ｂが入力されている間、評価関数Ｂに基づいて、前記ロボットの姿勢を最適化するための該ロボットの関節角速度指令Ｂを生成する姿勢最適化指令生成部と、
前記制御点に関するヤコビ行列のゼロ空間行列を計算するゼロ空間行列計算部と、
前記関節角速度指令Ａ、前記関節角速度指令Ｂ、及び前記ゼロ空間行列に基づいて、前記ロボットの第２の関節角速度指令を生成する第２の指令生成部と、
前記第１及び第２の関節角速度指令の和である第３の関節角速度指令に基づいて、前記サーボモータを制御する制御部とを有するロボットシステム。
【請求項２】
請求項１記載のロボットシステムにおいて、
前記評価関数Ａは、前記ロボットの各関節の可動限界角度として設定された設定角度と該各関節の角度の現在値との差の大きさに基づいて計算され、
前記リミット回避指令生成部は、前記評価関数Ａの勾配に基づいて前記関節角速度指令Ａを生成するロボットシステム。
【請求項３】
請求項１記載のロボットシステムにおいて、
前記評価関数Ａは、障害物に前記ロボットが接近可能な距離として設定された設定距離と、該障害物から該ロボットまでの距離との差の大きさに基づいて計算され、
前記リミット回避指令生成部は、前記評価関数Ａの勾配に基づいて前記関節角速度指令Ａを生成するロボットシステム。
【請求項４】
請求項１記載のロボットシステムにおいて、
前記評価関数Ａは、前記ロボットの可操作度に基づいて計算され、
前記リミット回避指令生成部は、前記評価関数Ａの勾配に基づいて前記関節角速度指令Ａを生成するロボットシステム。
【請求項５】
請求項１〜４のいずれか１項に記載のロボットシステムにおいて、
前記評価関数Ｂは、前記ロボットの前教示点における各関節の角度と該各関節の角度の現在値との差の大きさに基づいて計算され、
前記姿勢最適化指令生成部は、前記評価関数Ｂの勾配に基づいて前記関節角速度指令Ｂを生成するロボットシステム。
【請求項６】
請求項１〜４のいずれか１項に記載のロボットシステムにおいて、
前記評価関数Ｂは、前記ロボットの可操作度に基づいて計算され、
前記姿勢最適化指令生成部は、前記評価関数Ｂの勾配に基づいて前記関節角速度指令Ｂを生成するロボットシステム。
【請求項７】
請求項１〜６のいずれか１項に記載のロボットシステムにおいて、
前記ロボットの位置姿勢を教示するための教示ペンダントを更に備え、
前記教示ペンダントが、前記信号Ａを出力するための第１の信号出力部及び前記信号Ｂを出力するための第２の信号出力部を有するロボットシステム。
【請求項８】
請求項７記載のロボットシステムにおいて、
前記教示ペンダントは、表示画面と、
前記表示画面に現在の前記ロボットの姿勢を表すグラフィックス画像、及び該姿勢を最適化する前記ロボットのグラフィックス画像をそれぞれ描画する描画部を更に有するロボットシステム。
【請求項９】
冗長軸を含む複数の関節軸を有するロボットの制御点の速度指令に基づいて、前記ロボットの第１の関節角速度指令を生成する第１の指令生成部と、
信号Ａが入力されている間、評価関数Ａに基づいて、前記ロボットが動作限界となる状態を回避するための該ロボットの関節角速度指令Ａを生成するリミット回避指令生成部と、
信号Ｂが入力されている間、評価関数Ｂに基づいて、前記ロボットの姿勢を最適化するための該ロボットの関節角速度指令Ｂを生成する姿勢最適化指令生成部と、
前記制御点に関するヤコビ行列のゼロ空間行列を計算するゼロ空間行列計算部と、
前記関節角速度指令Ａ、前記関節角速度指令Ｂ、及び前記ゼロ空間行列に基づいて、前記ロボットの第２の関節角速度指令を生成する第２の指令生成部と、
前記第１及び第２の関節角速度指令の和である第３の関節角速度指令に基づいて、サーボモータを制御する制御部とを有するロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシステム及びロボット制御装置に関する。
【背景技術】
【０００２】
特許文献１には、ロボットによる作業に要求される自由度以外に、ロボット作業に影響しない冗長自由度を有するロボットを用いて、動作軌跡の教示データを作成することができるロボットの動作軌跡教示方法が記載されている。
この動作軌跡教示方法は、冗長自由度を要素とし、ロボットの関節角度空間の余裕を表現する評価関数に基づいて冗長自由度を決定することを特徴としている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−１８７０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、本発明の構成を有しない場合に比べ、冗長ロボットの操作性を向上させたロボットシステム及びロボット制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明の一の観点によれば、サーボモータによって駆動され、冗長軸を含む複数の関節軸を有するロボットと、
前記ロボットを制御するロボット制御装置とを備え、
前記ロボット制御装置は、入力された前記ロボットの制御点の速度指令に基づいて、前記ロボットの第１の関節角速度指令を生成する第１の指令生成部と、
信号Ａが入力されている間、評価関数Ａに基づいて、前記ロボットが動作限界となる状態を回避するための該ロボットの関節角速度指令Ａを生成するリミット回避指令生成部と、
信号Ｂが入力されている間、評価関数Ｂに基づいて、前記ロボットの姿勢を最適化するための該ロボットの関節角速度指令Ｂを生成する姿勢最適化指令生成部と、
前記制御点に関するヤコビ行列のゼロ空間行列を計算するゼロ空間行列計算部と、
前記関節角速度指令Ａ、前記関節角速度指令Ｂ、及び前記ゼロ空間行列に基づいて、前記ロボットの第２の関節角速度指令を生成する第２の指令生成部と、
前記第１及び第２の関節角速度指令の和である第３の関節角速度指令に基づいて、前記サーボモータを制御する制御部とを有するロボットシステムが適用される。【０００６】
また、他の観点によれば、冗長軸を含む複数の関節軸を有するロボットの制御点の速度指令に基づいて、前記ロボットの第１の関節角速度指令を生成する第１の指令生成部と、
信号Ａが入力されている間、評価関数Ａに基づいて、前記ロボットが動作限界となる状態を回避するための該ロボットの関節角速度指令Ａを生成するリミット回避指令生成部と、
信号Ｂが入力されている間、評価関数Ｂに基づいて、前記ロボットの姿勢を最適化するための該ロボットの関節角速度指令Ｂを生成する姿勢最適化指令生成部と、
前記制御点に関するヤコビ行列のゼロ空間行列を計算するゼロ空間行列計算部と、
前記関節角速度指令Ａ、前記関節角速度指令Ｂ、及び前記ゼロ空間行列に基づいて、前記ロボットの第２の関節角速度指令を生成する第２の指令生成部と、
前記第１及び第２の関節角速度指令の和である第３の関節角速度指令に基づいて、サーボモータを制御する制御部とを有するロボット制御装置が適用される。
【発明の効果】
【０００７】
本発明によれば、本発明の構成を有しない場合に比べ、冗長ロボットの操作性を向上できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施例に係るロボットシステムの構成図である。
【図２】同ロボットシステムの動作を示すフローチャートである。
【図３】同ロボットシステムのリミット回避動作を示すフローチャートである。
【図４】同ロボットシステムの姿勢最適化動作を示すフローチャートである。
【図５】同ロボットシステムが有する教示ペンダントに設けられた表示画面の説明図である。
【図６】同ロボットシステムが有する教示ペンダントの機能ブロック図である。
【図７】同ロボットシステムが有するロボット制御装置が有するリミット回避指令生成部が計算する評価関数ＶＪＬＣの説明図である。
【図８】同ロボットシステムが有するロボット制御装置が有するリミット回避指令生成部が計算する評価関数ＶＯＡＣの説明図である。
【図９】本発明の第２の実施例に係るロボットシステムの教示ペンダントの説明図である。
【図１０】同ロボットシステムの動作を示すフローチャートである。
【発明を実施するための形態】
【０００９】
続いて、添付した図面を参照しつつ、本発明を具体化した実施例につき説明し、本発明の理解に供する。なお、各図において、説明に関連しない部分は図示を省略する場合がある。
【００１０】
＜第１の実施例＞
本発明の第１の実施例に係るロボットシステム１０は、図１に示すように、第１〜第７の関節軸Ｊ１〜Ｊ７を有するロボット１２と、このロボット１２の動作を制御するロボット制御装置１４と、ロボット１２の位置姿勢を教示するための教示ペンダント１６を備えている。
図１に示すロボット座標系Ｃｒは、例えば、ロボット１２の第１の関節軸Ｊ１上にある点を原点とし、ロボット１２の前後方向に延びるＸ軸、左右方向に延びるＹ軸、及び上下方向に延びるＺ軸からなる直交座標系である。
【００１１】
ロボット１２は冗長ロボットであり、例えば、関節軸Ｊ３を冗長軸として含む７軸の垂直多関節ロボットである。各関節軸Ｊ１〜Ｊ７は、エンコーダが内蔵されたサーボモータ（不図示）により駆動される。ロボット１２は、７軸の垂直多関節ロボットに限定されるものではない。ロボットの他の例として、ロボットの作業空間の自由度に対して、関節軸を冗長に有するロボットが挙げられる。例えば、ロボット座標系ＣｒのＹ軸回りにそれぞれ回転する３つの関節のみを有する３軸のロボットは、ＸＺ平面に対しては冗長性を有している。従って、この３軸のロボットは、ＸＺ平面上の動作に関しては、関節軸を冗長に有するロボットである。つまり、ロボットは、関節の軸数や軸構成に関係なく、冗長自由度を有する冗長ロボットであればよい。
【００１２】
ロボット制御装置１４は、ロボット１２に接続されている。ロボット制御装置１４は、第１の指令生成部１４ａと、リミット回避指令生成部１４ｂと、姿勢最適化指令生成部１４ｃと、ゼロ空間行列計算部１４ｄと、第２の指令生成部１４ｅと、位置速度制御部（制御部の一例）１４ｆと、監視部１４ｇとを有している。ロボット制御装置１４は、図示しないＣＰＵを搭載しており、図１に示す各ブロックの機能は、ＣＰＵにより実行されるソフトウェアプログラムやハードウェアによって実現される。
【００１３】
第１の指令生成部１４ａは、ロボット１２の手先の速度指令（以下、単に「手先速度指令」という。）Ｖが入力されると、速度指令Ｖに基づいて、関節角速度指令（第１の関節角速度指令）ωｒｅｆ１を生成できる。
【００１４】
リミット回避指令生成部１４ｂは、教示ペンダント１６から信号Ａが入力されるとロボット１２がリミットを回避するための関節角速度指令（関節角速度指令Ａ）φＬＭＴを出力できる。信号Ａについては後述する。
ここで、リミットとは、ロボット１２が動作限界となる状態をいい、例えば、以下の第１〜第３のリミットがある。
第１のリミットは、関節軸が可動制限角度に到達する場合のリミットである。可動制限角度には、ロボット１２の設計上、機械的に定まる可動制限角度と、ソフトウェア上で任意に設定される可動制限角度とがあり、いずれのリミットを適用することも可能である。
第２のリミットは、ロボット１２が、ソフトウェア上で設定された距離まで障害物（例えば、周辺機器又は他のロボット）に接近する場合のリミットである。
第３のリミットは、ロボット１２が、ソフトウェア上で設定された範囲まで特異姿勢に接近する場合のリミットである。第３のリミットに到達したロボットは過大な関節角速度指令が与えられる。ここで、ロボットの特異姿勢とは、ロボットの関節の位置と回転軸の方向などの運動学的な状態により、特定の自由度が失われた姿勢である。例えば、ロボット１２の第２の関節軸Ｊ２、第４の関節軸Ｊ４、及び第６の関節軸Ｊ６が一直線上に並んだ姿勢で、特定方向に動作指令を与えると、これらの関節の関節角速度指令が過大になる。
【００１５】
リミット回避指令生成部１４ｂは、前述のリミットの種類に対応して、１）第１のリミットを回避するための関節角速度指令φＪＬＣ、２）第２のリミットを回避するための関節角速度指令φＯＡＣ、及び３）第３のリミットを回避するための関節角速度指令φＳＡＣをそれぞれ生成できる。これら関節角速度指令φＪＬＣ、φＯＡＣ、φＳＡＣの詳細な生成方法については後述する。
リミット回避指令生成部１４ｂは、生成した関節角速度指令φＪＬＣ、φＯＡＣ、φＳＡＣの和を関節角速度指令φＬＭＴとして出力できる。
【００１６】
姿勢最適化指令生成部１４ｃは、教示ペンダント１６から信号Ｂが入力されると、ロボット１２の姿勢を最適化するための関節角速度指令（関節角速度指令Ｂ）φＯＰＴを出力できる。信号Ｂについては後述する。
ここで、ロボット１２の姿勢の最適化には、例えば、以下の第１及び第２の最適化がある。第１の最適化は、ロボット１２の動作時間を短縮するための最適化である。第２の最適化は、ロボット１２の可操作度を向上させるための最適化である。
【００１７】
姿勢最適化指令生成部１４ｃは、最適化の種類に対応して、１）動作時間を短縮するための関節角速度指令φＴＭＣ、及び２）可操作度向上のための関節角速度指令φＳＡＣをそれぞれ生成できる。これら関節角速度指令φＴＭＣ、φＳＡＣの詳細な生成方法については後述する。なお、最適化の種類は、教示ペンダント１６から出力される信号ＢＳＥＬの値に基づいて判断される。
姿勢最適化指令生成部１４ｃは、生成した各関節角速度指令φＴＭＣ、φＳＡＣを関節角速度指令φＯＰＴとして出力できる。
【００１８】
ゼロ空間行列計算部１４ｄは、ロボット１２の関節角度に基づいて、ロボット１２の手先（制御点の一例）に関するヤコビ行列Ｊのゼロ空間行列Ｎを計算できる。詳細には、ゼロ空間行列計算部１４ｄは、関節角度（関節角度の現在値）からロボット１２の手先の位置姿勢及び各関節軸Ｊ１〜Ｊ７の方向を求め、ロボット１２の手先に関するヤコビ行列のゼロ空間行列を計算できる。
このゼロ空間行列とは、冗長ロボットにおいて、手先の位置姿勢を維持したまま、冗長自由度の動作指令を生成するための演算行列である。ここで、この動作指令は、冗長軸という特定の軸のみに対する指令ではなく、冗長自由度（手先の位置姿勢に影響の無い関節自由度）に対する指令であって、制御対象軸は、冗長軸を含む全ての軸又は一部の軸であり、制御周期毎のロボットの姿勢、動作方向に応じて異なる。ここで、この制御対象軸について、ロボット座標系ＣｒのＹ軸回りにそれぞれ回転する３つの関節軸（第１〜第３の関節軸）のみを有する３軸ロボットを例に説明する。この場合の冗長自由度としての制御対象軸は、３軸ロボットの第１〜第３の関節軸のうちの１つの関節軸に限られるのではなく、手先位置を維持したまま、ロボット座標系ＣｒのＹ軸回りに回転できる（姿勢を変化させる事ができる）第１〜第３の関節軸のうちの少なくとも１つの関節軸である。いずれの関節軸を制御対象軸とするかはゼロ空間行列を用いて計算される。例えば、第３の関節軸が動作リミットに到達し、Ｚ軸方向又はＸ軸方向へ手先を移動させる動作に寄与できない場合には、冗長自由度としての制御対象軸は第１の関節軸及び第２の関節軸となる。
ゼロ空間行列Ｎは、手先に関するヤコビ行列Ｊ、ヤコビ行列の擬似逆行列Ｊ＋、単位行列Ｉに基づいて、次式により計算される。
【００１９】
Ｎ＝Ｉ−Ｊ＋Ｊ      式（１）
【００２０】
ロボット１２の手先以外の箇所を制御対象箇所（制御点）とする場合には、制御対象箇所のヤコビ行列が用いられる。
なお、ロボット１２の関節角度及び関節角速度は、エンコーダからフィードバックされたエンコーダ値に減速比を乗算した結果に基づいて求められる。
【００２１】
第２の指令生成部１４ｅは、関節角速度指令φＬＭＴ、関節角速度指令φＯＰＴ、及びゼロ空間行列Ｎに基づいて、関節角速度指令（第２の関節角速度指令）ωｒｅｆ２を生成できる。生成された関節角速度指令ωｒｅｆ２は、第１の指令生成部１４ａが生成した関節角速度指令ωｒｅｆ１に加算され、関節角速度指令（第３の関節角速度指令）ωｒｅｆ３となる（図１参照）。
【００２２】
位置速度制御部１４ｆは、関節角速度指令ωｒｅｆ３と関節角速度フィードバックωｆｂとの差ｅに基づいて、サーボモータを制御し、各関節の位置速度を制御できる。本実施例では、位置速度制御部１４ｆへの指令として、関節角速度指令ωｒｅｆ３を使用している。なお、位置速度制御部１４ｆへの指令として、ロボット１２の現在の関節角度に関節角速度指令ωｒｅｆ３を加算した関節角度指令を使用してもよい。
なお、位置速度制御部１４ｆは、ロボット１２を構成する関節軸Ｊ１〜Ｊ７の数に対応する分だけ設けられている。
【００２３】
監視部１４ｇは、ロボット１２がリミットに到達したか否かを判定できる。監視部１４ｇは、リミットに到達した場合には、ロボット１２の動作を停止し、アラームを出力できる。
具体的には、監視部１４ｇは、各関節軸Ｊ１〜Ｊ７の角度を監視することによって、第１のリミットに到達したか否かを判定できる。
また、監視部１４ｇは、予め登録された障害物の位置及び寸法に基づいてロボット１２と障害物との距離を計算し、第２のリミットに到達したことを判定できる。障害物の位置及び寸法が予めロボット制御装置１４に登録されていない場合には、操作者が目視により第２のリミットに到達したことを判定し、ロボット１２の動作を停止することもできる。
また、監視部１４ｇは、ロボット１２が特異姿勢に接近すると過大な関節角速度指令ωｒｅｆ３が生成されるので、ロボット１２の姿勢（ロボット１２の関節角度の現在値θｆｂ）と関節角速度指令ωｒｅｆ３を監視することによって、第３のリミットに到達したか否かを判定できる。ロボット１２の特異姿勢は、第２の関節軸Ｊ２、第４の関節軸Ｊ４、及び第６の関節軸Ｊ６が一直線上に並んだ姿勢である。ロボットの特異姿勢は、リンクの構成によって異なる。
【００２４】
教示ペンダント１６は、ロボット制御装置１４に接続されている。教示ペンダント１６には、ジョグ操作ボタン２０、第１のリミット回避ボタン（第１の信号出力部の一例）２１、第１の姿勢最適化ボタン（第２の信号出力部の一例）２２及び表示画面３２が設けられている。
ロボット１２の操作者は、教示ペンダント１６に設けられたジョグ操作ボタン２０を用いて、ロボット１２をジョグ操作し、ロボット１２の作業プログラムの教示を行うことができる。
また、操作者は、教示ペンダント１６に設けられた再生ボタン１９を用いて作業プログラムの再生動作を行うことができる。
更に、操作者は、教示ペンダント１６を用いて、ロボット１２の制御対象箇所（制御点）を指定の座標系に基づいて動作させることができる。
【００２５】
ここで、制御対象箇所は、例えば、ロボット１２の手先である。制御対象箇所の他の例として、ロボット１２の関節の特定部位や手先に取付けたエンドエフェクタの先端等が挙げられる。
【００２６】
また、指定の座標系とは、例えば、ロボット座標系Ｃｒである。指定の座標系としてロボット座標系Ｃｒが選択されている場合には、ロボット１２の手先をＸ軸方向、Ｙ軸方向及びＺ軸方向並びにＸ軸回りの回転方向、Ｙ軸回りの回転方向及びＺ軸回りの回転方向に移動させることができる。指定の座標系の他の例として、関節座標系やロボット１２の操作者が任意に設定した座標系等が挙げられる。
【００２７】
ジョグ操作ボタン２０は、操作者がロボット１２をジョグ操作するためのボタンである。ジョグ操作ボタン２０が押されると、教示ペンダント１６は、予め設定された手先速度指令Ｖを出力する。
【００２８】
第１のリミット回避ボタン２１は、操作者が、リミットを回避することを指示するためのボタンである。第１のリミット回避ボタン２１が押されると、教示ペンダント１６は、信号Ａを出力する。第１のリミット回避ボタン２１は、モーメンタリ動作する。つまり、教示ペンダント１６は、第１のリミット回避ボタン２１が押されている間、信号Ａを出力する。
【００２９】
第１の姿勢最適化ボタン２２は、操作者が、ロボット１２の姿勢を最適化することを指示するためのボタンである。教示ペンダント１６は、第１の姿勢最適化ボタン２２が押されると、信号Ｂを出力する。第１の姿勢最適化ボタン２２は、モーメンタリ動作する。つまり、教示ペンダント１６は、第１の姿勢最適化ボタン２２が押されている間、信号Ｂを出力する。
【００３０】
教示ペンダント１６の表示画面３２には、ロボット制御装置１４が有する機能に応じた表示領域が構成されるとともに、この表示領域に文字や画像等の情報が表示される。後述するロボット１２の姿勢の最適化を支援するための姿勢最適化支援機能を実行する際には、表示画面３２には、例えば図５に示すように、左側に表示領域Ｄ１、右側上部に表示領域Ｄ２、右側下部に表示領域Ｄ３が構成される。表示領域Ｄ１には、ロボット１２の教示データを記述した教示プログラムが表示される。表示領域Ｄ２には、現在のロボット１２の姿勢を表すグラフィックス画像が表示される。表示領域Ｄ３には、姿勢が最適化されるロボット１２を表すグラフィックス画像が表示される。
【００３１】
教示ペンダント１６は、図６に示すように、姿勢最適化指令生成部１６ｃと、ゼロ空間行列計算部１６ｄと、第２の指令生成部１６ｅと、ロボットモデル描画部（描画部の一例）１６ｒとを更に有している。
姿勢最適化指令生成部１６ｃは、ロボット制御装置１４に設けられた姿勢最適化指令生成部１４ｃと実質的に同じように動作する。姿勢最適化指令生成部１６ｃは、信号Ｓが入力されると、ロボット１２の姿勢を最適化するための関節角速度指令φＯＰＴａを出力できる。
【００３２】
ゼロ空間行列計算部１６ｄは、ロボット制御装置１４に設けられたゼロ空間行列計算部１４ｄと実質的に同じように動作する。ゼロ空間行列計算部１６ｄは、ロボットモデル描画部１６ｒが出力する関節角度θｍｆｂに基づいて、ロボットモデルの手先に関するヤコビ行列のゼロ空間行列Ｎａを計算できる。
【００３３】
第２の指令生成部１６ｅは、ロボット制御装置１４に設けられた第２の指令生成部１４ｅと実質的に同じように動作する。第２の指令生成部１６ｅは、関節角速度指令φＯＰＴａ及びゼロ空間行列Ｎａに基づいて、関節角速度指令ωｒｅｆ２ａを生成できる。生成された関節角速度指令ωｒｅｆ２ａは、積分器１６ｉにて積分され、ロボット制御装置１４から送信されたロボット１２の関節角度の現在値θｆｂに加算され、関節角度θｍとなる。
【００３４】
ロボットモデル描画部１６ｒは、ロボット１２の関節角度に基づいて、ロボット１２のグラフィックス画像を作成し、表示画面３２に描画できる。ロボットモデル描画部１６ｒは、ロボット制御装置１４から送信されたロボット１２の関節角度の現在値θｆｂに基づいて、その関節角度θｆｂのロボットモデルのグラフィックス画像を表示領域Ｄ２に描画できる。ロボット１２の関節角度θｆｂが変化すれば、ロボットモデル描画部は、随時グラフィックス画像の描画を更新する。
また、ロボットモデル描画部１６ｒは、関節角度θｍに基づいて、関節の角度が角度θｍとなるロボットモデルのグラフィックス画像を表示領域Ｄ３に描画できる。
教示ペンダント１６には、操作者が操作する対象を実機のロボット１２及び表示領域Ｄ３に表示されるロボットモデルのいずれか一方に切り替える切り替えボタン２５（図１参照）が設けられている。
【００３５】
なお、姿勢最適化指令生成部１６ｃ、ゼロ空間行列計算部１６ｄ、第２の指令生成部１６ｅ、及びロボットモデル描画部１６ｒは、必ずしも、教示ペンダント１６に設けられていなくてもよい。即ち、姿勢最適化指令生成部１６ｃ、ゼロ空間行列計算部１６ｄ、第２の指令生成部１６ｅ、及びロボットモデル描画部１６ｒの一部が、例えばロボット制御装置１４に設けられ、ロボット制御装置１４と教示ペンダント１６とが、互いに通信してデータを送受信することで、同様の構成を実現することもできる。
【００３６】
次に、図２を参照して、ロボットシステム１０の動作について説明する。
操作者は、ジョグ操作ボタン２０を押して、ロボット１２の手先の位置姿勢を操作できる。手先の位置姿勢を操作している間に、ロボット１２がリミットに到達した場合、操作者は、第１のリミット回避ボタン２１を押し、冗長軸Ｊ３を含むロボット１２の全関節軸Ｊ１〜Ｊ７を動作させ、手先の位置姿勢を維持しながら、リミットを回避できる。また、操作者は、第１の姿勢最適化ボタン２２を押し、冗長軸Ｊ３を含むロボット１２の全関節軸Ｊ１〜Ｊ７を動作させ、手先の位置姿勢を維持しながら、ロボット１２の姿勢を最適化できる。
【００３７】
（ステップＳａ１）
操作者がジョグ操作ボタン２０を押して、ロボット１２の手先を所望する位置姿勢に移動させる。
図１に示す第１の指令生成部１４ａに、教示ペンダント１６から手先速度指令Ｖが入力される。第１の指令生成部１４ａは、手先速度指令Ｖ及びロボット１２の手先に関するヤコビ行列の擬似逆行列Ｊ＋に基づいて、式（２）を用いて関節角速度指令ωｒｅｆ１を生成する。
【００３８】
ωｒｅｆ１＝Ｊ＋Ｖ      式（２）
【００３９】
第１の指令生成部１４ａは、式（２）を用いずに関節角速度指令ωｒｅｆ１を生成してもよい。例えば、第１の指令生成部１４ａは、手先速度指令Ｖを積分して手先位置指令に変換した後、逆運動学計算することによって、関節角速度指令ωｒｅｆ１を生成できる。
【００４０】
（ステップＳａ２）
監視部１４ｇが、ロボット１２がリミットに到達したか否かを判定する。
監視部１４ｇが、ロボット１２がリミットに到達したと判断した場合には、ロボット１２を停止し、アラームを出力する。その後、次ステップＳａ３に示すリミットを回避するためのリミット回避動作が実行される。
監視部１４ｇが、ロボット１２がリミットに到達していないと判断した場合には、ステップＳａ４に進む。
【００４１】
（ステップＳａ３）
ロボット１２の操作者がジョグ操作ボタン２０から指を離し、第１のリミット回避ボタン２１を押すと、信号Ａがリミット回避指令生成部１４ｂ（図１参照）に入力され、以下のステップＳａ３１及びステップＳａ３２（図３参照）が順に処理される。
その結果、ロボット１２は、リミットを回避するためのリミット回避動作を実行する。
【００４２】
（ステップＳａ３１）
リミット回避指令生成部１４ｂが、監視部１４ｇが出力したアラームに対応する第１〜第３のリミットをそれぞれ回避するための関節角速度指令φＪＬＣ、φＯＡＣ、φＳＡＣを計算する。以下、各関節角度指令φＪＬＣ、φＯＡＣ、φＳＡＣの計算方法について説明する。
【００４３】
（１）関節角速度指令φＪＬＣの計算
第１のリミットを回避するための関節角速度指令φＪＬＣは、評価関数ＶＪＬＣ（評価関数Ａの一例）に基づいて、式（３）、式（４ａ）、式（４ｂ）により計算される。
【００４４】
φＪＬＣ  ＝  −ｇｒａｄ（ＶＪＬＣ）         式（３）
【００４５】
θ―＜θ＜θ＋の場合：
ＶＪＬＣ  ＝  ０      式（４ａ）
θ―＜θ＜θ＋以外の場合：
ＶＪＬＣ  ＝  ０．５ＫＪＬＣ（θＬＩＭ−θ）２      式（４ｂ）
【００４６】
式（３）、式（４ａ）及び式（４ｂ）の処理は、各関節軸Ｊ１〜Ｊ７について行われる。係数ＫＪＬＣは関節角速度指令のゲイン（重み）である。
角度θＬＩＭは、各関節の可動範囲を制限するための角度（可動限界角度）として設定された設定角度である。角度θは、各関節の角度の現在値である。
角度θ−及び角度θ＋はそれぞれ、設定角度θＬＩＭの上限及び下限であり、評価関数ＶＪＬＣが計算される制限領域を表す（図７参照）。
【００４７】
式（４ａ）及び式（４ｂ）に示すように、制限領域内に侵入した関節についてのみ評価関数ＶＪＬＣを計算し、それ以外の関節は評価関数ＶＪＬＣを０にする。なお、第１のリミットの回避が完了したら、関節角度指令は０となる。
評価関数ＶＪＬＣは、式（４ｂ）に示すように、設定角度θＬＩＭと各関節の角度フィードバック（関節角度の現在値）θとの差の大きさに基づいて求められる。
従って、評価関数ＶＪＬＣの勾配から、関節が関節可動域から遠ざかるように関節角速度指令φＪＬＣが計算される。
【００４８】
（２）関節角速度指令φＯＡＣの計算
第２のリミットを回避するための関節角速度指令φＯＡＣは、評価関数ＶＯＡＣ（評価関数Ａの一例）に基づいて、式（５）、式（６ａ）、式（６ｂ）により計算される。
【００４９】
φＯＡＣ  ＝  −ＪＰＴｇｒａｄ（ＶＯＡＣ）      式（５）
【００５０】
Ｄ―＜Ｄ＜Ｄ＋の場合：
ＶＯＡＣ  ＝  ０      式（６ａ）
Ｄ―＜Ｄ＜Ｄ＋以外の場合：
ＶＯＡＣ  ＝  ０．５ＫＯＡＣ（ＤＬＩＭ−Ｄ）２      式（６ｂ）
【００５１】
式（５）において、行列ＪＰは、ロボット１２の障害物に最も近い箇所（最近点）から計算される最近点のヤコビ行列である。なお、最近点は、ロボット１２がリミットを回避している間は、ロボット１２の関節角度の現在値が変更されると新たに計算される。
【００５２】
式（５）の処理は、各関節軸Ｊ１〜Ｊ７について行われる。式（６ａ）及び式（６ｂ）の処理はロボット座標系Ｃｒの各軸（Ｘ軸、Ｙ軸及びＺ軸）について行われる。係数ＫＯＡＣは回避指令のゲイン（重み）である。
距離ＤＬＩＭは、障害物に対しロボット１２が接近可能な距離として設定された設定距離である。障害物は、例えば、ＣＡＤデータやオフラインシミュレータのモデルデータを読み込むことによって、ロボット制御装置１４にモデルデータとして設定される。また、他の例として、障害物は、カメラやレーザセンサ等を用いて障害物のデータを実測することによって設定される。更に、他の例として、障害物は、操作者が教示ペンダント１６を操作することによって設定される。
距離Ｄは、障害物からロボット１２までの最短距離である。
距離Ｄ―及び距離Ｄ＋は、それぞれ距離ＤＬＩＭの上限及び下限であり、評価関数ＶＯＡＣが計算される制限領域を表す（図８参照）。
【００５３】
式（６ａ）及び式（６ｂ）に示すように、ロボット１２が制限領域内に侵入した場合について評価関数ＶＯＡＣを計算し、それ以外は評価関数ＶＯＡＣを０にする。なお、第２のリミットの回避が完了したら、関節角速度指令φＯＡＣは０となる。
評価関数ＶＯＡＣは、式（６ｂ）に示すように、距離ＤＬＩＭと距離Ｄとの差の大きさに基づいて求められる。
従って、評価関数ＶＯＡＣの勾配及びヤコビ行列ＪＰから、ロボット１２が障害物から遠ざかるように関節角速度指令φＯＡＣが計算される。
【００５４】
（３）関節角速度指令φＳＡＣの計算
第３のリミットを回避するための関節角速度指令φＳＡＣは、評価関数ＶＳＡＣ（評価関数Ａの一例）に基づいて、式（７）、式（８ａ）、式（８ｂ）により計算される。
【００５５】
φＳＡＣ  ＝  −ｇｒａｄ（ＶＳＡＣ）      式（７）
【００５６】
ω―＜ω＜ω＋の場合：
ＶＳＡＣ  ＝  ０      式（８ａ）
【００５７】
ω―＜ω＜ω＋以外の場合：
【００５８】
【数１】
2013038544.tif 000003
【００５９】
式（７）、式（８ａ）及び式（８ｂ）の処理は、各関節軸Ｊ１〜Ｊ７について行われる。係数ＫＳＡＣは関節角速度指令のゲイン（重み）である。
角速度指令ωは、各関節の角速度指令である。
角速度ω―及び角速度ω＋は、それぞれ関節の角速度指令ωの上限と下限であり、評価関数ＶＳＡＣが計算される制限角速度を表す。
【００６０】
式（８ａ）及び式（８ｂ）に示すように、制限角速度ω―、ω＋を超えて関節角速度指令ωが与えられた関節についてのみ評価関数ＶＳＡＣを計算し、それ以外の関節は評価関数ＶＳＡＣを０にする。なお、第３のリミットの回避が完了したら、関節角速度指令φＳＡＣは０となる。
式（８ａ）、式（８ｂ）の場合分けは、角速度指令ωに基づいて行われている。ただし、場合分けの前に特異姿勢の判定が行われる。つまり、ロボット１２の姿勢に関する判定を事前に実施し、特異姿勢と判断した後に式（８ａ）、式（８ｂ）が演算される。
評価関数ＶＳＡＣは、式（８ｂ）に示すように、ロボット１２の手先の可操作度に基づいて求められる。
従って、評価関数ＶＳＡＣの勾配から、関節が特異点から遠ざかるように関節角速度指令φＳＡＣが計算される。
【００６１】
リミット回避指令生成部１４ｂは、生成した各関節角速度指令φＪＬＣ、φＯＡＣ、φＳＡＣを関節角速度指令φＬＭＴとして出力する。
ただし、リミット回避指令生成部１４ｂは、生成した各関節角速度指令φＪＬＣ、φＯＡＣ、φＳＡＣの和を関節角速度指令φＬＭＴとして出力する。即ち、２つ以上のリミットが発生した場合には、該当するリミットをそれぞれ回避するための関節角速度指令の和が、関節角速度指令φＬＭＴとなる。
【００６２】
（ステップＳａ３２）
第２の指令生成部１４ｅが、ゼロ空間行列Ｎを用いて手先の位置姿勢を維持しながらリミットを回避するための関節角速度指令ωＬＭＴを次式により計算し、計算した関節角速度指令ωＬＭＴを、関節角速度指令ωｒｅｆ２として生成する。前述のように、ゼロ空間行列Ｎを用いることにより、各制御周期で、冗長自由度としての制御対象軸を決定し、関節角速度指令ωＬＭＴを計算するのである。
【００６３】
ωＬＭＴ  ＝  ＮφＬＭＴ      式（９）
【００６４】
ここで、関節角速度指令φＬＭＴはリミット回避指令生成部１４ｂが出力した、リミット回避のための関節角速度指令φＪＬＣ、φＯＡＣ、φＳＡＣの和である。
【００６５】
なお、式（９）以外に、式（１０）〜式（１２）を用いて、手先の位置姿勢を維持しながらリミット回避する関節角速度指令ωＬＭＴを計算する方法がある。
【００６６】
ＶＬＭＴ  ＝  ＪφＬＭＴ      式（１０）
ここで、ＶＬＭＴはφＬＭＴから計算された仮想的な手先速度指令である。
【００６７】
【数２】
2013038544.tif 000004
【００６８】
【数３】
2013038544.tif 000005
【００６９】
式（１２）の第１項目（φＬＭＴ）は、リミット回避するための関節角速度である。式（１２）の第２項目は、ＶＬＭＴを生み出す関節角速度の中で、角速度ノルムが最小となる関節角速度指令である。第１項目と第２項目とは異なるため、手先の位置姿勢を維持しながら、リミット回避を行うことができる。
【００７０】
ロボット１２の操作者が第１のリミット回避ボタン２１から指を離すと、第２の指令生成部１４ｅが出力する関節角速度指令ωｒｅｆ２はゼロとなる。
以上、ステップＳａ３１及びステップＳａ３２が順に処理されることによって、ステップＳａ３に示したリミット回避動作が行われる。
【００７１】
このように、ロボット１２がリミットに到達した場合に、第１のリミット回避ボタン２１を用いることで、例えば、ロボット１２の操作者は冗長軸をどちらの方向に、何度移動させればリミット回避できるかという回避動作を気にする手間が低減される。即ち、操作者は、第１のリミット回避ボタン２１を押して、オンラインでリミット回避をすることができる。また、操作者は、第１のリミット回避ボタン２１を押す時間を調整することにより、実機のロボット１２の関節の動作角度を決定できる。
【００７２】
（ステップＳａ４）
操作者が、ロボット１２の手先の位置姿勢が所望の位置姿勢に到達したかを判断する。
操作者が所望の位置姿勢に到達したと判断した場合には、次ステップＳａ５が実行される。
一方、操作者が、所望の位置姿勢に到達していないと判断した場合には、ステップＳａ１が実行される。即ち、操作者が、教示ペンダント１６を用いて、ロボット１２を再度移動させる。ただし、ロボット１２が動作範囲の限界（到達限界）に到達した場合、ロボット１２は、それ以上は所定方向に移動できない。到達限界は、ロボット１２のリンク長や関節可動域などの設計上のパラメータから決定される。到達限界は、ロボット制御装置１４に予め設定されている。
【００７３】
（ステップＳａ５）
手先の位置姿勢が所望する位置姿勢に到達した際に、操作者が、最適化の種類（第１の最適化又は第２の最適化）を選択し、ロボット１２の操作者が第１の姿勢最適化ボタン２２を押すと、信号ＢＳＥＬ及び信号Ｂが姿勢最適化指令生成部１４ｃに入力される。その後、以下のステップＳａ５１及びステップＳａ５２（図４参照）が順に処理される。
その結果、ロボット１２の冗長自由度を使用して、手先の位置姿勢を維持しながら冗長自由度を有するロボット１２の姿勢を最適化する姿勢最適化動作が実行される。
【００７４】
（ステップＳａ５１）
図１に示す姿勢最適化指令生成部１４ｃが、操作者によって選択された最適化の種類（信号ＢＳＥＬの値）に応じて、動作時間短縮のための関節角速度指令φＴＭＣ又は可操作度向上のための関節角速度指令φＳＡＣを計算する。なお、リミット回避指令生成部１４ｂで生成される、第３のリミットを回避するためのφＳＡＣと、姿勢最適化指令生成部１４ｃで生成される、可操作度向上のためのφＳＡＣとは、両者とも特異点から離そうとする指令なので、同じ変数φＳＡＣを用いている。
【００７５】
（１）関節角速度指令φＴＭＣの計算
動作時間短縮のための関節角速度指令φＴＭＣは、評価関数ＶＴＭＣ（評価関数Ｂの一例）に基づいて、式（１３）、式（１４）により計算される。
【００７６】
φＴＭＣ  ＝  −ｇｒａｄ（ＶＴＭＣ）      式（１３）
【００７７】
ＶＴＭＣ  ＝  ０．５ＫＴＭＣ（θＴＭＣ−θ）２      式（１４）
【００７８】
式（１３）及び式（１４）において、変数ｉは、関節軸の番号（１〜７）を示している。係数ＫＴＭＣは関節角速度指令のゲイン（重み）である。
角度θＴＭＣは、前教示点（現教示点の１つ前の教示点）における関節角度である。現教示点におけるロボット１２の関節軸の関節角度を、前教示点におけるロボット１２の関節軸の関節角度に近づけるように制御することで、前教示点から現教示点までのロボット１２の動作時間が短縮される。いずれの軸を制御対象とするかは（動作時間短縮のための関節角速度指令を与えるかは）、制御周期毎のロボットの姿勢、動作方向に応じて異なり、ゼロ空間行列Ｎを用いて計算する。
角度θは、各関節の角度の現在値である。
【００７９】
式（１４）に示すように、評価関数ＶＴＭＣは、角度θＴＭＣと各関節の角度フィードバック（各関節の角度の現在値）θとの差の大きさに基づいて求められる。
従って、評価関数ＶＴＭＣの勾配から、前教示位置に近い関節角速度指令、つまり動作時間を短縮する関節角速度指令φＴＭＣが計算される。
【００８０】
最大動作速度の大きい関節のゲインを大きく設定することで、より動作時間の短縮が可能となる。つまり、動作速度の大きい関節を大きく動作させ、動作速度の小さい関節を小さく動作させることによって、より効率的な動作指令が生成される。
【００８１】
（２）関節角速度指令φＳＡＣの計算
可操作度向上のための関節角速度指令φＳＡＣは、評価関数ＶＳＡＣ（評価関数Ｂの一例）に基づいて、式（１５）、式（１６）により計算される。
【００８２】
φＳＡＣ  ＝  −ｇｒａｄ（ＶＳＡＣ）         式（１５）
【００８３】
【数４】
2013038544.tif 000006
【００８４】
式（１５）及び式（１６）に示すように、評価関数ＶＳＡＣは、ロボット１２の可操作度に基づいて計算され、ステップＳａ３１の特異点回避と同様の方法により、関節角速度指令φＳＡＣが生成される。
【００８５】
（ステップＳａ５２）
図１に示す第２の指令生成部１４ｅが、ゼロ空間行列Ｎを用いて手先の位置姿勢を維持しながらロボット１２の姿勢を最適化するための関節角速度指令ωＯＰＴを次式により計算し、計算した関節角速度指令ωＯＰＴを、関節角速度指令ωｒｅｆ２として生成する。
【００８６】
ωＯＰＴ  ＝  ＮφＯＰＴ      式（１７）
【００８７】
ここで、関節角速度指令φＯＰＴは姿勢最適化指令生成部１４ｃが出力した、ロボット１２の姿勢最適化のための関節角速度指令φＴＭＣ、φＳＡＣのいずれかである。
【００８８】
ロボット１２の操作者が第１の姿勢最適化ボタン２２から指を離すと、第２の指令生成部１４ｅが出力する関節角速度指令ωｒｅｆ２はゼロとなる。
以上、ステップＳａ５１及びステップＳａ５２が順に処理されることによって、ステップＳａ５に示した姿勢最適化動作が行われる。
【００８９】
このように、手先に関するゼロ空間行列Ｎを用いることにより手先の位置姿勢を維持しながらロボット１２の姿勢を最適化することができる。
【００９０】
ここで、ステップＳａ５において、ロボット１２の操作者は、ロボット姿勢最適化支援機能を用いて、ロボット１２の姿勢最適化動作における挙動を予測できる。以下、ロボット姿勢最適化支援機能について説明する。
前述の通り、表示領域Ｄ２には、図６に示すロボットモデル描画部１６ｒにより、現在のロボットモデルのグラフィックス画像が描画されている。また、ロボットモデル描画部１６ｒにより、表示領域Ｄ３には、姿勢を最適化したロボットモデルのグラフィックス画像が描画されている。
【００９１】
まず、操作者は、ロボット１２の手先が所望する位置姿勢に到達した後、図１に示す切り替えボタン２５を押して、操作対象を実機のロボット１２から表示領域Ｄ３に表示されたロボットモデルへと切り替える。また、最適化の種類（第１の最適化又は第２の最適化）を選択する。
【００９２】
次に、操作者は第１の姿勢最適化ボタン２２を押す。教示ペンダント１６の姿勢最適化指令生成部１６ｃに信号Ｓ（図６参照）が入力される。姿勢最適化指令生成部１６ｃは、ロボット１２の操作者が選択した最適化の種類に応じた関節角速度指令φＯＰＴａを計算する。第２の指令生成部１６ｅは、姿勢最適化指令生成部１６ｃが計算した関節角速度指令φＯＰＴａ及びゼロ空間行列計算部１６ｄが計算したゼロ空間行列Ｎａに基づいて、関節角速度指令ωｒｅｆ２ａを生成する。
【００９３】
ロボットモデル描画部１６ｒは、積分器１６ｉにて積分された関節角速度指令にロボット制御装置１４から送信されたロボット１２の関節角度の現在値θｆｂが加算された関節角度θｍに基づいて、その関節角度θｍのロボットモデルのグラフィックス画像を表示領域Ｄ３に描画する。即ち、姿勢を最適化したロボット１２のグラフィックス画像が表示領域Ｄ３に表示される。
なお、操作者は、第１の姿勢最適化ボタン２２を押す時間を調整することにより、ロボットモデルの関節の動作角度（最適化の度合い）を決定できる。
【００９４】
図５に示す表示領域Ｄ３には、第２の最適化（可操作度を向上させるための最適化）により最適化されたロボット１２が描画されている。表示領域Ｄ２に描画された現在のロボット１２の姿勢に比べると、表示領域Ｄ３に描画されたロボット１２の方が、手先の可操作度が向上している。
【００９５】
このように、操作者が姿勢最適化支援機能を実行することによって、姿勢を最適化したロボット１２のグラフィックス画像を表示領域Ｄ３上で確認できる。
また、予め決定された統一的な評価指標（例えば、評価関数）を使って全教示データに関する冗長自由度を決定するのでは無く、教示位置毎に個別の評価指標を選択し、選択した評価指標により冗長自由度を最適化できる。換言すると、動作プログラム内の教示データに関する位置全てを同じ評価指標で最適化するのではなく、教示点毎に、操作者が最適化手段を選択できる。
【００９６】
続いて操作者は、表示領域Ｄ３上にてロボットモデルの姿勢を確認した後、再度切り替えボタン２５（図１参照）を押し、操作対象を表示領域Ｄ３に表示されたロボットモデルから実機へと切り替える。
操作者は、実機のロボット１２の冗長自由度の姿勢を最適化して、最終的な教示位置を決定できる。
なお、操作者は、第１の姿勢最適化ボタン２２を押す時間を調整することにより、実機のロボット１２の関節の動作角度（最適化の度合い）を決定できる。
【００９７】
以上説明したように、本実施例に係るロボットシステムは、ロボット１２がリミットに到達する前に、手先の位置姿勢を維持しながらリミットを回避できる。また、ロボット１２が目標位置に到達した後に、手先の位置姿勢を維持しながら冗長自由度の姿勢を最適化できる。即ち、操作者は、冗長自由度を含むロボット１２の関節角度を、オンラインで決定できるので、冗長ロボットの操作性が向上する。
【００９８】
＜第２の実施例＞
続いて、本発明の第２の実施例に係るロボットシステムについて説明する。第１の実施例に係るロボットシステム１０と同一の構成要素同じ符号を付して詳しい説明を省略する場合がある。
【００９９】
教示ペンダント１１６には、図９に示すように、第２のリミット回避ボタン１２１及び第２の姿勢最適化ボタン１２２が更に設けられている。
第２のリミット回避ボタン１２１は、操作者が、リミットを回避することを指示するためのボタンである。第２のリミット回避ボタン１２１が押されると、教示ペンダント１１６は、信号Ａを出力する。第２のリミット回避ボタン１２１は、オルタネート動作する。つまり、教示ペンダント１１６は、第２のリミット回避ボタン１２１が一度押されると、再度第２のリミット回避ボタン１２１が押されるまで、信号Ａを出力する。
【０１００】
第２の姿勢最適化ボタン１２２は、操作者が、ロボット１２の姿勢を最適化することを指示するためのボタンである。第２の姿勢最適化ボタン１２２が押されると、教示ペンダント１１６は、信号Ｂを出力する。第２の姿勢最適化ボタン１２２は、オルタネート動作する。つまり、教示ペンダント１１６は、第２の姿勢最適化ボタン１２２が一度押されると、再度第２の姿勢最適化ボタン１２２が押されるまで、信号Ｂを出力する。
【０１０１】
次に、第２の実施例に係るロボットシステムの動作について、図１０に基づいて説明する。
【０１０２】
（ステップＳｂ１）
ロボット制御装置１４が、ロボット１２のＣＡＤデータやオフラインシミュレータから障害物とロボット１２のモデルデータを読み込む。その結果、ロボット制御装置１４に、障害物のモデルが設定される。
【０１０３】
（ステップＳｂ２）
操作者が教示ペンダント１１６に設けられた第２のリミット回避ボタン１２１及び第２の姿勢最適化ボタン１２２を押す。教示ペンダント１１６から出力された信号Ａ及び信号Ｂが、それぞれロボット制御装置１４のリミット回避指令生成部１４ｂ及び姿勢最適化指令生成部１４ｃに入力される。
ロボット制御装置１４のリミット回避指令生成部１４ｂ及び姿勢最適化指令生成部１４ｃは、それぞれ関節角速度指令φＬＭＴ、φＯＰＴを出力する。
【０１０４】
（ステップＳｂ３）
また、操作者が最適化の種類（第１の最適化又は第２の最適化）を選択する。姿勢最適化指令生成部１４ｃに、最適化の種類に応じた信号ＢＳＥＬが入力される。
【０１０５】
（ステップＳｂ４）
操作者がロボット１２の手先を所望する位置姿勢に移動させるため、ジョグ操作ボタン２０を押して、ロボット１２をジョグ操作すると、自動でリミット回避動作及び姿勢最適化動作が実行される。
【０１０６】
リミット回避動作及び姿勢最適化動作の為の関節角速度指令は、それぞれ、第１の実施例にて説明したステップＳａ３及びステップＳａ５に示した処理と同様の方法により求められる。つまり、本ステップＳｂ４では、式（２）に基づいて第１の指令生成部１４ａが出力した手先速度指令Ｖを実現する関節角速度指令ωｒｅｆ１と、第２の指令生成部１４ｅが出力した関節角速度指令ωｒｅｆ２とが加算され、ロボット１２の各関節角速度指令ωｒｅｆ３が生成される。この関節角速度指令ωｒｅｆ２は、手先の位置姿勢を維持しながらリミットを回避するための関節角速度指令ωＬＭＴ（式（９）参照）と、手先の位置姿勢を維持しながらロボット１２の姿勢を最適化するための関節角速度指令ωＯＰＴ（式（１７）参照）との和である。
【０１０７】
第２のリミット回避ボタン１２１及び第２の姿勢最適化ボタン１２２を再度押した場合には、教示ペンダント１１６は、信号Ａ及び信号Ｂの出力を停止し、リミット回避動作又は姿勢最適化動作の実行は解除される。
【０１０８】
なお、操作者は、第２のリミット回避ボタン１２１又は第２の姿勢最適化ボタン１２２のいずれか一方のみを押して、リミット回避動作又は姿勢最適化動作のいずれか一方のみを実行することも可能である。
【０１０９】
本実施例に示した方法によれば、自動でリミット回避動作及び姿勢最適化動作が実行されるので、冗長ロボットの操作性が向上する。
【０１１０】
本発明は、前述の実施例に限定されるものではなく、本発明の要旨を変更しない範囲での変更は可能である。例えば、前述の実施例や変形例の一部又は全部を組み合わせて発明を構成する場合も本発明の技術的範囲に含まれる。
【０１１１】
教示ペンダントには、第１及び第２のリミット回避ボタン並びに第１及び第２の姿勢最適化ボタンのうち、必要な機能に対応するボタンのみ設けることができる。
【０１１２】
ボタンは、ハードウェアによるボタンに限定されるものではない。ボタンは、ソフトウェアによって実現されるボタンであっても良い。
【０１１３】
本発明は、前述の実施例に示したように実機のロボットを用いる場合だけでなく、ロボットのシミュレーションモデルを用いる場合にも適用できる。即ち、オフラインシミュレータを用いて教示プログラムの妥当性を確認するためにも利用出来る。
【符号の説明】
【０１１４】
１０：ロボットシステム、１２：ロボット、１４：ロボット制御装置、１４ａ：第１の指令生成部、１４ｂ：リミット回避指令生成部、１４ｃ：姿勢最適化指令生成部、１４ｄ：ゼロ空間行列計算部、１４ｅ：第２の指令生成部、１４ｆ：位置速度制御部、１４ｇ：監視部、１６：教示ペンダント、１６ｃ：姿勢最適化指令生成部、１６ｄ：ゼロ空間行列計算部、１６ｅ：第２の指令生成部、１６ｉ：積分器、１６ｒ：ロボットモデル描画部、１９：再生ボタン、２０：ジョグ操作ボタン、２１：第１のリミット回避ボタン、２２：第１の姿勢最適化ボタン、２５：切り替えボタン、３２：表示画面、１１６：教示ペンダント、１２１：第２のリミット回避ボタン、１２２：第２の姿勢最適化ボタン
【図１】
2013038544.tif 000007
【図２】
2013038544.tif 000008
【図３】
2013038544.tif 000009
【図４】
2013038544.tif 000010
【図５】
2013038544.tif 000011
【図６】
2013038544.tif 000012
【図７】
2013038544.tif 000013
【図８】
2013038544.tif 000014
【図９】
2013038544.tif 000015
【図１０】
2013038544.tif 000016
【国際調査報告】
2013038544.tif 000017
2013038544.tif 000018
2013038544.tif 000019
2013038544.tif 000020
2013038544.tif 000021