(57)【特許請求の範囲】
【請求項１】
複数の軸を有し各軸に対応して設けられる複数のモータを備えた多関節ロボットと、前記複数のモータを駆動制御して前記多関節ロボットの動作を制御するコントローラとを備えたロボットシステムにおいて、
前記コントローラは、
作業者が前記多関節ロボットに直接触れながらティーチングをするダイレクトティーチングモードの実施が可能に構成され、
前記ダイレクトティーチングモードでは、
前記多関節ロボットの前記複数の軸について予め設定された順序で、開放対象となる所定の軸は前記モータのブレーキを解除した状態で且つ他の残りの軸は前記モータのブレーキをかけた状態のままとするブレーキ解除状態を設定された所定時間だけ実施するブレーキ解除ステップを実行し、
使用者によるティーチングの動作終了時まで予め設定された順序で前記ブレーキ解除ステップを繰り返し続けることを特徴とするロボットシステム。
【請求項２】
請求項１に記載のロボットシステムにおいて、
前記コントローラは、前記ブレーキ解除ステップを、前記予め設定された順番が1回りすることを1周期として繰り返し実行し、１周期内では、１軸毎に前記モータのブレーキ解除を行うための設定時間として、固定的に確保される固定開放時間に、前周期での当該軸の移動量が多いほど長くなるように移動量に比例して算出される可変開放時間であって軸毎に算出される時間の総和が常に予め定められた一定時間となるように算出される可変開放時間を加算した時間が設定されることを特徴とするロボットシステム。
【請求項３】
請求項２に記載のロボットシステムにおいて、
前記コントローラは、
前記可変開放時間の算出として、
前周期での各軸の移動量と平均移動量とを算出し、
前記各軸の移動量から前記平均移動量を差し引いた各軸の偏差移動量を算出し、
前記各軸の偏差移動量の値が同符号のものを加算して分配分母係数を算出し、
前記各軸の偏差移動量を前記分配分母係数で除した値に「１」を加算した値を各軸の変化係数として算出し、
前記可変開放時間の初期値として予め設定された基準時間に、前記各軸の変化係数を乗じたものを前記可変開放時間として設定する第１の可変開放時間設定処理を実行する
ことを特徴とするロボットシステム。
【請求項４】
請求項２に記載のロボットシステムにおいて、
前記コントローラは、
前記可変開放時間の算出として、
前周期での各軸の移動量と平均移動量とを算出し、
前記各軸の移動量から前記平均移動量を差し引いた各軸の偏差移動量を算出し、
前記各軸の偏差移動量を予め定められた所定の基準移動量で除した値を増加率とし当該増加率に「１」を加算した値を各軸の変化係数として算出し、
前記可変開放時間の初期値としてあらかじめ設定された基準時間に、前記各軸の変化係数を乗じたものを前記可変開放時間として設定する第２の可変開放時間設定処理を実行する
ことを特徴とするロボットシステム。
【請求項５】
請求項３に記載のロボットシステムにおいて、
前記コントローラは、
前記可変開放時間の算出として、
前記複数の軸のうちの特定の軸の前記移動量が予め設定されたしきい値以下と判断したときには前記第１の可変開放時間設定処理を実行し、
前記特定の軸の前記移動量が前記しきい値を超えると判断したときには、
前周期での各軸の移動量と平均移動量とを算出し、
前記各軸の移動量から前記平均移動量を差し引いた各軸の偏差移動量を算出し、
前記各軸の偏差移動量を予め定められた所定の基準移動量で除した値を増加率とし当該増加率に「１」を加算した値を各軸の変化係数として算出し、
前記可変開放時間の初期値としてあらかじめ設定された基準時間に、前記各軸の変化係数を乗じたものを前記可変開放時間として設定する第２の可変開放時間設定処理を実行する
ことを特徴とするロボットシステム。
【請求項６】
請求項４または５に記載のロボットシステムにおいて、
前記コントローラは、
前記第２の可変開放時間設定処理の実行時に、
前記各軸の偏差移動量の前記増加率中に「−１」未満のものがあるときには、最も小さい増加率の絶対値の逆数を圧縮係数として算出し、
前記各軸の変化係数の算出では、前記各軸の偏差移動量の前記増加率に前記圧縮係数を乗じてから「１」を加算する
ことを特徴とするロボットシステム。
【請求項７】
請求項１に記載のロボットシステムにおいて、
前記コントローラは、前記ダイレクトティーチングモードで行うブレーキ解除ステップで、１軸毎に前記モータのブレーキ解除を行う設定された所定時間として、全ての軸に一定時間を設定することを特徴とするロボットシステム。
【請求項８】
請求項１ないし７のいずれか一項に記載のロボットシステムにおいて、
前記コントローラは、
前記ダイレクトティーチングモードでは、
前記多関節ロボットの複数の軸について予め設定された順序で解除対象軸を設定するとともに、設定された前記解除対象軸を除いた残りの軸のうちで前記解除対象軸よりも順序が後ろの軸に対して順次現在の解除対象軸の姿勢を基準として直交相当の軸が存在するか否かを判定し、該当する軸が存在する場合には同時解除対象軸として設定し、前記解除対象軸および前記同時解除対象軸について前記モータのブレーキ解除を設定された時間行うと共に残りの軸のモータのブレーキをかけたままの状態とするブレーキ解除ステップを実施し、
使用者による教示動作が終了するまで前記ブレーキ解除ステップを繰り返し実施することを特徴とするロボットシステム。
【請求項９】
請求項８に記載のロボットシステムにおいて、
前記コントローラは、
前記同時解除対象軸の判定では、
設定された前記解除対象軸に対して残りの軸のうちで前記解除対象軸よりも順序が後ろの軸に続いて前記解除対象軸よりも順序が前の軸についても前記順序にしたがって直交相当の軸が存在するか否かを判定することを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の軸を有するロボットに対してダイレクトティーチングが可能なロボットシステムに関する。
【背景技術】
【０００２】
複数の軸を有するロボットとして、例えば６軸ロボットにおいては、位置姿勢の教示を行う場合に、ティーチングペンダントを用いてデータ入力やロボットアームのマニュアル動作により設定する方法がある。これに対して、ロボットアームを直接作業者により移動させて位置姿勢を設定する場合に対応してダイレクトティーチングがある。
【０００３】
この場合、ダイレクトティーチングの実施に際しては、ロボットアームを所望の位置姿勢に設定するために、全軸のモータのブレーキ解除をする必要がある。しかし、全軸のモータが同時にブレーキ解除されると、ロボットアームの手先落下などの事態が生ずるおそれがある。これによって作業者負傷の懸念があるので、ダイレクトティーチングの実施に際して安全上の対策を十分に行う必要があった。
【０００４】
この点、例えば特許文献１に示される技術では、６軸のロボットのダイレクトティーチングを行う場合に、全軸のブレーキを同時に解除しないで実施するものが開示されている。すなわち、特許文献１のものでは、６軸のうちの基本軸（第１軸〜第３軸）と手先軸（第４軸〜第６軸）の２グループを形成し、どちらかのグループのみをブレーキ解除してダイレクトティーチングの作業をするようにしている。これにより、前述のようなロボットアームの手先落下といった状況が発生するのを抑制することができるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−７７５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した特許文献１に示されるものでは、基本軸（第１軸〜第３軸）と手先軸（第４軸〜第６軸）の２グループのブレーキ解除の切替えは作業者による人為的な作業であるから、この点においてダイレクトティーチの際のロボットアームの移動の際の応答性が悪くなり、本来のダイレクトティーチングの特徴の１つである作業者の感覚的なティーチングがし難くなるものであった。
【０００７】
本発明は、上記事情を考慮してなされたもので、その目的は、複数の軸を有するロボットにおいて、ダイレクトティーチングを行う際に、作業中に手先落下が発生しないようにしつつ、ダイレクトティーチの応答性も十分確保することができるようにしたロボットシステムを提供することにある。
【課題を解決するための手段】
【０００８】
請求項１に記載のロボットシステムによれば、ロボットのダイレクトティーチングを実施する際には、コントローラにより、多関節ロボットの複数の軸について予め設定された順序で所定の軸毎にモータのブレーキ解除を設定された所定時間だけ行うブレーキ解除ステップを実施する。そして、使用者によるティーチングの動作が終了するまでブレーキ解除ステップが繰り返し実施される。ここで、所定の軸は、１軸でも良いし、１軸のブレーキ解除に合わせてブレーキを解除する条件の備わった他の軸が存在しても良い。また、設定された時間は、各軸に固定的に設定される時間としても良いし、各軸の動作状態に応じて可変的に設定する時間としても良い。
【０００９】
これにより、ダイレクトティーチングを実施しているときには、常にブレーキ解除されるのは所定の軸だけの状態となり、しかもブレーキ解除される軸が設定された時間が経過すると切り替わっていくので、作業中に意図していない軸が一気に移動して落下することが防止され、作業中の安全性を確保することができるようになる。また、ブレーキ解除される軸が設定された時間が経過すると切り替わることで、時間差で少しずつ全軸が動くことになるが、本来ダイレクトティーチでの手先の動きは人の作業である点からゆっくりした動きが前提となるので、作業者の感覚としては全軸を同時にブレーキ解除したのと同等の感覚で操作ができ、この結果、応答性も確保することができる。
【００１０】
請求項２に記載のロボットシステムによれば、コントローラにより、ブレーキ解除ステップが、予め設定された順番が1回りすることを1周期として繰り返し実行され、１周期内では、１軸毎にモータのブレーキ解除を行うための設定時間として、固定的に確保される固定開放時間に、前周期での当該軸の移動量が多いほど長くなるように移動量に比例して算出される可変開放時間であって軸毎に算出される時間の総和が常に予め定められた一定時間となるように算出される可変開放時間を加算した時間が設定される。
【００１１】
これにより、複数の軸について、１軸毎にモータのブレーキ解除がなされ、その場合の設定時間が、固定開放時間に可変開放時間を加算した時間が設定されるので、安全性の向上を図りつつ、ティーチングの作業性の向上も図ることができる。各軸については、例えば移動量が少ない或いは移動していない軸であってもブレーキが解除される設定時間として固定開放時間だけは確保されているので、毎回必ず移動可能な状態が確保されている。また、移動量が多い軸については、移動が優先して行えるように可変開放時間により移動量にほぼ正比例した時間が加算されるので、現在のティーチングの状況を反映した作業性の高い設定時間とすることができる。
【００１２】
請求項３に記載のロボットシステムによれば、コントローラにより、可変開放時間の算出として次の第１の可変開放時間設定処理を実行する。この第１の可変開放時間設定処理は、まず、前周期での各軸の移動量と平均移動量とを算出し、次に、各軸の移動量から平均移動量を差し引いた各軸の偏差移動量を算出する。次に、各軸の偏差移動量の値が同符号のものを加算して分配分母係数を算出し、続いて、各軸の偏差移動量を分配分母係数で除した値に「１」を加算した値を各軸の変化係数として算出する。そして、可変開放時間の初期値としてあらかじめ設定された基準時間に、各軸の変化係数を乗じたものを可変開放時間として設定する。
【００１３】
これにより、各軸の可変開放時間の設定の際に、該当する軸の前周期での移動量が多いものについて長い時間となるように設定することができることは勿論、可変開放時間の設定に分配分母係数を算出して配分をするので、移動量実績が数％〜数十％という増加量に圧縮されて評価されることになり、これによって、移動量が多い軸に一気に時間が配分されてしまうことを抑制しながら、全軸に適切な時間を配分することができる。このため、手先の位置を微調整するときのように、各軸を細かく動作させたい場合に各軸が容易に動作するようになり、操作性に優れたものとなる。
【００１４】
請求項４に記載のロボットシステムによれば、コントローラにより、可変開放時間の算出として次の第２の可変開放時間設定処理を実行する。この第２の可変開放時間設定処理は、まず、前周期での各軸の移動量と平均移動量とを算出し、次に、各軸の移動量から平均移動量を差し引いた各軸の偏差移動量を算出する。そして、各軸の偏差移動量を所定の基準移動量で除した値を増加率とし当該増加率に「１」を加算した値を各軸の変化係数として算出し、前記可変開放時間の初期値としてあらかじめ設定された基準時間に、前記各軸の変化係数を乗じたものを前記可変開放時間として設定する。
【００１５】
これにより、各軸の可変開放時間の設定の際に、該当する軸の前周期での移動量が多いものについて長い時間となるように設定することができるが、可変開放時間の設定を該当する軸の移動量にほぼ正比例して多く配分をすることができるので、移動量が多い軸の可変開放時間を優先して配分することができ、移動量が多い場合のダイレクトティーチングの作業性を優先させることができる。このため、教示位置に向かって手先を大きく動かしたいような場合、その手先の大きな移動のために大きく動作する軸に対して可変開放時間を長く配分できるようになるので、動かしたい軸を大きく動かして楽に手先を教示位置近くまで移動させることができるようになり、操作性に優れたものとなる。
【００１６】
請求項５に記載のロボットシステムによれば、コントローラにより、可変開放時間の算出として、複数の軸のうちの特定の軸の前周期での移動量が予め設定されたしきい値以下と判断したときには第１の可変開放時間設定処理を実行し、特定の軸の前周期での移動量がしきい値を超えると判断したときには、前記第２の可変開放時間設定処理を実行する。この場合、特定の軸は、複数の軸の全てが対象であっても良いし、ダイレクトティーチングの作業性から必要とされる軸を対象としても良い。
【００１７】
これにより、ダイレクトティーチングの作業に応じて、特定の軸として設定されている軸の移動量がしきい値を超えるか否かを基準として第１の可変開放時間設定処理を行うか第２の可変開放時間設定処理を行うかの切り換えを自動的に行わせることができるようになり、特定の軸の移動の仕方からその作業において移動量が多い作業をしているのか、移動量が少ない細かい作業をしているのかの作業内容の違いに応じて可変開放時間の配分の仕方を切り替えて設定することができるので、移動量の変化が激しいような作業の場合に適したものとなる。
【００１８】
請求項６に記載のロボットシステムによれば、コントローラにより、第２の可変開放時間設定処理の実行時に、各軸の偏差移動量の中に「−１」未満のものがあるときには、最も小さい増加率の絶対値の逆数を圧縮係数として算出し、各軸の変化係数の算出では、各軸の偏差移動量の前記増加率に圧縮係数を乗じてから「１」を加算する。
【００１９】
これにより、第２の可変開放時間設定処理を行う場合に、移動量の非常に少ない軸が移動量の多い軸に対して相対的に偏差移動量が小さくなって、その偏差移動量の増加率が「−１」を下回る場合、圧縮係数を設定することで、移動量の多い軸に可変開放時間が長く配分され過ぎることを防止すると同時に、一定時間に定められた１周期内で、前周期での移動量の非常に少ない軸でも、最低限のブレーキ解除時間として固定開放時間を確保できるようにする。以上により、前周期で移動量の非常に少ない軸がブレーキ解除されず移動できなくなるといった不具合の発生を抑止しながら、前周期の移動量の多い軸に対して適切な可変開放時間を割り当てることができる。
【００２０】
請求項７に記載のロボットシステムによれば、ロボットのダイレクトティーチングを実施する際には、コントローラにより、多関節ロボットの複数の軸について予め設定された順序で１軸毎にモータのブレーキ解除を一定時間行うブレーキ解除ステップを実施する。そして、使用者によるティーチングの動作が終了するまでブレーキ解除ステップが繰り返し実施される。
【００２１】
これにより、ダイレクトティーチングを実施しているときには、常にブレーキ解除されるのは１つの軸だけの状態となり、しかもブレーキ解除される軸が一定時間ごとに切り替わっていくので、特定の軸だけが一気に落下することが防止され、作業中の安全性を確保することができるようになる。また、ブレーキ解除される軸が一定時間ごとに切り替わることで、時間差で少しずつ全軸が動くことになるが、本来ダイレクトティーチでの手先の動きは人の作業である点からゆっくりした動きが前提となるので、作業者の感覚としては全軸を同時にブレーキ解除したのと同等の感覚で操作ができ、この結果、応答性も確保することができる。
【００２２】
請求項８に記載のロボットシステムによれば、ロボットのダイレクトティーチングを実施する際には、コントローラにより、多関節ロボットの複数の軸について予め設定された順序で解除対象軸を設定するとともに、設定された解除対象軸に対して残りの軸のうちで解除対象軸よりも順序が後ろの軸に対して順次直交相当の軸が存在するか否かを判定し、該当する軸が存在する場合には同時解除対象軸として設定し、解除対象軸および同時解除対象軸についてモータのブレーキ解除を一定時間行うブレーキ解除ステップを実施し、使用者による教示動作が終了するまでブレーキ解除ステップを実施する。
【００２３】
これにより、同時にブレーキ解除をしても支障を生じない直交もしくは直交状態とみなしても支障のない直交相当の関係にある軸のみを一定時間ブレーキ解除をしてフリーの状態とするので、ダイレクトティーチングの作業に際してアームの落下事故の発生を抑制しつつアーム移動の自由度を高めて作業性の向上を図ることができる。
【００２４】
請求項９に記載のロボットシステムによれば、コントローラにより、同時解除対象軸の判定で、設定された解除対象軸に対して残りの軸のうちで解除対象軸よりも順序が後ろの軸に続いて解除対象軸よりも順序が前の軸についても順序にしたがって直交相当の軸が存在するか否かを判定するので、同時にブレーキ解除をすることができる軸の発生確率を高めることができ、ダイレクトティーチングにおける作業性をより高めることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態を示す電気的なブロック構成図
【図２】ロボットシステムの外観構成図
【図３】ダイレクトティーチングのブレーキ解除ステップの１周期の制御の流れを示すフローチャート
【図４】ロボットの開始位置および教示位置を概略的に示す図
【図５】ダイレクトティーチングの動作説明図（その１）
【図６】ダイレクトティーチングの動作説明図（その２）
【図７】本発明の第２の実施形態を示す図３相当図
【図８】本発明の第３の実施形態を示す図３相当図
【図９】本発明の第４の実施形態を示すダイレクトティーチングの制御のフローチャート
【図１０】図３相当図
【図１１】移動量に比例する可変開放時間を設定するための制御のフローチャート
【図１２】各軸の移動量と開放時間の具体的設定例を示す図
【図１３】本発明の第５の実施形態を示す図１１相当図
【図１４】各軸の移動量と開放時間の具体的設定例を示す図（その１）
【図１５】各軸の移動量と開放時間の具体的設定例を示す図（その２）
【図１６】本発明の第６の実施形態を示す図１１相当図
【図１７】各軸の移動量と開放時間の具体的設定例を示す図
【図１８】各軸の開放時間の推移を示すグラフ
【発明を実施するための形態】
【００２６】
（第１の実施形態；請求項１，７）
以下本発明の第１の実施形態について図１〜図６を参照して説明する。
図２はロボットのシステム１の外観構成を示している。このロボットシステム１は、ロボット２と、ロボット２を制御するコントローラ３と、コントローラ３に接続されたティーチングペンダント４とから構成されている。
【００２７】
ロボット２は、垂直６軸の多関節型ロボットとして構成されている。このロボット２は、ベース５と、このベース５に回転関節軸の第第１軸Ｌ１を中心に水平方向に旋回可能に支持されたショルダ部６と、このショルダ部６に回転関節軸の第２軸Ｌ２を中心に上下方向に旋回可能に支持された下アーム７と、この下アーム７に回転関節軸の第３軸Ｌ３を中心に上下方向に旋回可能に支持された第１の上アーム８と、この第１の上アーム８の先端部に回転関節軸の第第４軸Ｌ４を中心に捻り回転可能に支持された第２の上アーム９と、この第２の上アーム９に回転関節軸の第５軸Ｌ５を中心に上下方向に旋回可能に支持された手首１０と、この手首１０に回転関節軸の第６軸Ｌ６を中心に捻り回転可能に支持されたフランジ１１とから構成されている。なお、ロボット先端であるフランジ１１には、ワークを把持するハンドや、視覚検査のために用いるカメラなどのエンドエフェクタ（図示せず）が取り付けられるようになっている。
【００２８】
ベース５、ショルダ部６、下アーム７、第１の上アーム８、第２の上アーム９、手首１０、フランジ１１は、ロボット２におけるアームとして機能し、固定アームであるベース５を除く各アーム６〜１１は、前段のアームに回転可能に支持された回転関節軸である第第１軸Ｌ１〜第６軸Ｌ６に固定連結されている。
【００２９】
次に、電気的なブロック構成を示す図１において、ロボット２には、上記した各アーム６〜１１の回転関節軸である第１軸Ｌ１〜第６軸Ｌ６の周りに回転駆動させるためのサーボモータからなるモータＭ１〜Ｍ６が設けられている。モータＭ１〜Ｍ６の回転により、図示しない減速機構を介して各アーム６〜１１が回転駆動されるように構成されている。また、各モータＭ１〜Ｍ６には、第１軸Ｌ１〜第６軸Ｌ６に連結されたエンコーダＳ１〜Ｓ６が設けられ、回転検出信号をコントローラ３に出力するように構成されている。
【００３０】
ロボット２の動作を制御するコントローラ３は、マイコンを主体とした構成であり、ＣＰＵ１２、記憶手段としてのＲＯＭ１３およびＲＡＭ１４を備えている。ＲＯＭ１３は、一般的な読み出し専用のメモリに加えて、電気的に書き換え可能なフラッシュメモリ（ＥＥＰＲＯＭの一種）などのメモリも含むものである。このＲＯＭ１３には、後述するダイレクトティーチングに関する制御プログラムを含めてロボット２を駆動制御するための各種制御プログラムが記憶されている。
【００３１】
また、コントローラ３には、ロボット２のモータＭ１〜Ｍ６を駆動させるための駆動回路１５が設けられている。コントローラ３には、ロボット２側の各エンコーダＳ１〜Ｓ６からの検出信号に基づいて各モータＭ１〜Ｍ６の回転角を検出する回転位置検出回路が設けられており、ＣＰＵ１２は、その回転角情報に基づいて駆動回路１５に位置姿勢を制御するための制御信号を出力するように構成されている。
【００３２】
次に、ロボット２の各アーム６〜１１の６つの回転関節軸である第１軸Ｌ１〜第６軸Ｌ６について説明する。ベース５および各アーム６〜１１には、３次元の座標が規定されている。このうち、床面に据え付けられるベース５の座標系（図２に座標軸ＸＹＺで示す）は、不動の座標系で基準座標（ロボット座標）とされる。アーム６〜１１の座標は、各アーム６〜１１の回転関節軸の第１軸Ｌ１〜第６軸Ｌ６の回転中心軸線上に設定されており、アーム６〜１１の回転によりロボット座標上での位置と姿勢が変化する。
【００３３】
ＲＯＭ１３には、ロボット座標上におけるショルダ部６の座標位置、ショルダ部６の座標上における下アーム７の座標位置、下アーム７の座標上における第１の上アーム８の座標位置、第１の上アーム８の座標上における第２の上アーム９の座標位置、第２の上アーム９の座標上における手首１０の座標位置、手首１０の座標上におけるフランジ１１の座標位置、各アーム６〜１１の長さなどの各種のパラメータが記憶されている。なお、以下では、各アーム６〜１１の座標のロボット座標上の位置を、単に、各アーム６〜１１の位置ということとする。
【００３４】
ロボット先端であるフランジ１１の座標の原点は、当該フランジ１１の先端面の回転中心に定められている。そして、ＣＰＵ１２は、座標変換の計算機能を有し、ロボット先端の位置（姿勢を含む；以下同じ）が与えられると、当該与えられた位置をロボット先端が取るような各アーム６〜１０の回転角を演算（逆変換）できるようになっており、また、各アーム６〜１１の回転角が与えられると、各アーム６〜１１の位置を演算（順変換）できるようにもなっている。
【００３５】
ロボット２の動作を教示により設定する動作プログラムはティーチングペンダント４により作成されてＲＯＭ１３あるいはＲＡＭ１４に記憶される。コントローラ３は、内部に記憶された制御プログラムに基づいて、ロボット先端の移動軌跡を演算し、そして、ロボット先端が開始位置から教示位置まで移動する間、当該ロボット先端の速度パターンが台形パターンや三角パターンなどの所定の速度パターンとなるように、サンプリングタイム毎のロボット先端の位置を演算する。
【００３６】
ロボット２の動作制御中、コントローラ３は、サンプリングタイム毎に、エンコーダＳ１〜Ｓ６から与えられる各モータＭ１〜Ｍ６の回転角から各アーム６〜１０の回転角を演算し、各アーム６〜１１の回転角からフランジ１１の位置を演算して現在位置を検出する。そして、ロボット先端の現在位置の次の位置における各アーム６〜１１の回転角をメモリから取得し、各アーム６〜１１の回転角から各モータＭ１〜Ｍ６の回転角を演算して当該各回転角を各モータＭ１〜Ｍ６の目標回転角として駆動回路１５に出力する。
【００３７】
次に、上記構成のロボットシステムにおいて、ロボット２のダイレクトティーチングを行う場合について図３〜図６を参照して説明する。
作業者によりティーチングペンダント４からダイレクトティーチングのモードが設定されると、コントローラ３は、図３に示すような手順によりダイレクトティーチングの制御プログラムを実行する。ダイレクトティーチングでは、作業者によりロボット２の各アーム６〜１１を教示位置まで直接移動させて設定するものである。例えば図４に示すように、（ａ）に示す開始位置から（ｍ）に示す教示位置まで移動させる場合で説明する。また、この実施形態では、回転関節軸である第１軸Ｌ１〜第６軸Ｌ６の設定順序は、第１軸Ｌ１から順次番号順に第６軸Ｌ６に移行するように設定されている。
【００３８】
この順序は、かならずしも第１軸Ｌ１から軸番号の順に設定する必要はなく、作業に応じて適宜所望の順序に設定できる。また、フランジ１１を捻り動作させる第６軸Ｌ６については、取り付けられるエンドエフェクタによっては教示動作時には常時ブレーキ解除としてフリー状態とすることができる場合がある。
【００３９】
コントローラ３は、まず、第１軸Ｌ１のモータＭ１のブレーキを解除してフリー状態にするともに他の回転関節軸である第２軸Ｌ２〜第６軸Ｌ６のモータＭ２〜Ｍ６にダイナミックブレーキをかけてロック状態とする（図３のステップＡ１，Ａ２）。コントローラ３は、この状態のまま任意時間として例えば予め設定された所定時間として１ｍｓ待って第１軸Ｌ１周りのダイレクトティーチングの動作を可能とする（ステップＡ３）。尚、この回転関節軸１軸分のブレーキ解除の動作をブレーキ解除ステップとしている。
【００４０】
上記の動作においては、図４（ａ）に示す状態から、第１軸Ｌ１周りの旋回移動がフリーとなる状態であるから、例えば図５（ｂ）に示すように、作業者はアーム６つまりショルダ部６から上の部分を水平面内で回動させることができる。なお、説明の都合でロボット２の動きをわかりやすくするために、図５（ｂ）の位置まで移動させたことを示しているが、実際には、１ｍｓの開放時間であるから、１回の移動量はわずかなものである。
【００４１】
上記の動作において、モータＭ１のブレーキを解除してフリー状態にするとは、モータＭ１を駆動する駆動回路１５において、通電経路をオープン状態に制御することでモータＭ１の回動に自己制動がかからないように制御することをいう。また、モータＭ１にダイナミックブレーキをかけてロック状態にするとは、モータＭ１を駆動する駆動回路１５において通電経路をショート状態にしてモータＭ１の回転動作に対する自己制動がかかるように制御することをいう。
【００４２】
次に、コントローラ３は、第２軸Ｌ２のモータＭ２のブレーキを解除してフリー状態にするとともに他の回転関節軸である第１軸Ｌ１、第３軸Ｌ３〜第６軸Ｌ６のモータＭ１，Ｍ３〜Ｍ６にブレーキをかけてロック状態とし（ステップＡ４，Ａ５）、上述同様にこの状態のままで任意時間（同じく一定時間例えば１ｍｓ）待つ（ステップＡ６）。この状態では、第２軸Ｌ２周りの旋回がフリーとなるブレーキ解除ステップの状態であるから、作業者はアーム７つまり下アーム７を上下方向に旋回移動させてダイレクトティーチングを行うことができる。
【００４３】
以下、同様にしてコントローラ３は、第３軸Ｌ３以降の各軸についてモータＭ３〜Ｍ６を順次ブレーキ解除してフリー状態にし、他の回転関節軸についてはダイナミックブレーキをかけることで、いずれにおいても、１つの軸のみがフリー状態となるように制御している（ステップＡ７〜Ａ１８）。以上のようにして順次第１軸Ｌ１から第６軸Ｌ６に至るまで短時間（１ｍｓｅｃ）単位で開放されるので、全ての回転関節軸について所定間隔でダイレクトティーチングの作業を行うことができる。この一連のブレーキ解除ステップをすべての軸について行う動作をブレーキ解除サイクルとしている。
【００４４】
尚、１回のブレーキ解除サイクルでロボット２の位置を開始位置（図４（ａ））から目的とする教示位置（図４（ｍ））に移動させることができない場合には（ステップＡ１９でＮＯ）、同様にしてブレーキ解除サイクルを繰り返し実行し（ステップＡ１〜Ａ１８）、ロボット２の位置が教示位置に移動できて、ダイレクトティーチング作業の終了がティーチングペンダント４から入力操作されると（ステップＡ１９でＹＥＳ）、コントローラ３は、ダイレクトティーチングモードを終了する。
【００４５】
ダイレクトティーチングによるロボット２の位置が図４（ｍ）（あるいは図６（ｍ））に示した教示位置に設定されると、この位置の変数データがティーチングペンダント４により取り込まれ、これによって動作プログラムのデータとして組み込むことができる。
【００４６】
このような第１の実施形態によれば、ダイレクトティーチングを実施する際に、コントローラ３により、第１軸Ｌ１〜第６軸Ｌ６までの６つの回転関節軸について、所定の順序で１軸ずつ一定時間毎にブレーキ解除をするように制御するので、特定の回転関節軸だけが一気に落下することを防止でき、教示作業における安全性を向上させることができる。
【００４７】
また、ブレーキ解除する回転関節軸を一定時間ごとに順次切り替えるので、換言すれば全軸について順次一定時間毎に動かすことができるようになり、ダイレクトティーチング時のような教示動作でのロボット２の手先１０部分の動きが比較的遅い動きになる動作では、作業者にとっては全軸を同時に開放させたのと同じような感覚で操作することができるようになり、全軸を開放させる従来相当の応答性とほぼ同等のものとすることができる。
【００４８】
上記実施形態においては、一定時間（任意時間）として、１ｍｓを設定した場合を示したが、この一定時間はダイレクトティーチング作業を行う作業者の安全性を考慮して次のような原則を適用している。
【００４９】
すなわち、回転関節軸Ｌ１〜Ｌ６のモータＭ１〜Ｍ６を順次ブレーキ解除したときに、解除したモータが暴走した場合でも作業者の安全を確保できる時間を上限とするものである。ブレーキ解除をしたモータが異常な回転状態になった場合に、ロボット２の手先部分が移動する速度が上昇して作業者に万一衝突した場合でも事故とならない程度の移動速度となる範囲を想定している。
【００５０】
この場合、ロボット２の種類やスペックにも依存するが、ロボット２の手先の移動の危険速度が例えば２５０ｍｍ／ｓ以上であるとすると、ブレーキ解除の直後からこの危険速度に達するまでの時間を想定して一定時間として設定することができる。また、ここではロボット２の手先にはエンドエフェクタが取り付けられていない状態、つまりロボット２の先端部が最も軽い状態で速く移動する場合でも危険速度に達しない時間を設定する。このため、実際には、エンドエフェクタが取り付けられた状態では、危険速度に達するまでにはまだ時間がかかる場合もある。
【００５１】
上記の原理に従って回転関節軸毎に一定時間を算出すると、その時間は軸毎に異なる時間が一定時間として得られることが予想される。したがって、回転関節軸毎に異なる一定時間を設定することもできるし、それらのうちの最短の時間を共通の一定時間として設定することもできる。この点、一定時間の設定には、ダイレクトティーチングの際の応答性の点も考慮して設定することが好ましい。
【００５２】
上記実施形態では、ブレーキ解除サイクルの単位でダイレクトティーチングの終了判断をしているが、ブレーキ解除ステップ毎にダイレクトティーチングの終了判断をするようにしても良い。
【００５３】
（第２の実施形態；請求項８）
図７は本発明の第２の実施形態を示すもので、以下、第１の実施形態と異なる部分について説明する。この実施形態においては、ブレーキを解除する回転関節軸の数を支障のない条件の下で２軸まで増やすようにしたところが異なる部分で、ダイレクトティーチングの際の位置姿勢の作業の自由度を高めるようにしたものである。
【００５４】
図７はダイレクトティーチングを実施する際のコントローラ３による制御の流れを示す図である。コントローラ３は、まず、解除軸１変数を「１」に設定し（ステップＢ１）、続いて全軸Ｌ１〜Ｌ６をロック状態に制御する（ステップＢ２）。この場合、各軸のロックは、各軸Ｌ１〜Ｌ６を駆動するモータＭ１〜Ｍ６にダイナミックブレーキ（ＤＢ）をかけることで制御する。
【００５５】
次に、各軸Ｌ１〜Ｌ６について、順変換を実行して各アーム６〜１１の位置を演算する（ステップＢ３）。続いて、コントローラ３は、解除対象軸を設定するためのループカウント値として解除軸１変数の値に「１」を加算した値つまり「２」を設定し（ステップＢ４）、解除軸１アプローチとして解除軸１変数の軸つまり第１軸Ｌ１のアプローチを算出する（ステップＢ５）。次に、ループカウントアプローチとしてループカウント値「２」の軸つまりここでは第２軸Ｌ２のアプローチを算出する（ステップＢ６）。
【００５６】
続いて、コントローラ３は、上記ステップＢ５，Ｂ６で算出した解除軸１アプローチとループカウントアプローチとの両方のベクトルの角度を計算する（ステップＢ７）。つまり、ここでは、第１軸Ｌ１と第２軸Ｌ２との交差角度θを計算する。そして、計算結果として得られたベクトル間の交差角度θが、次式（１）を満たしているか否かを判断する（ステップＢ８）。
【００５７】
（９０°−α）≦｜θ｜≦（９０°＋α）              （１）
これは、ベクトル間の交差角度θが許容角度範囲（±α）で直交（＝９０°）する状態に相当している「直交相当」か否かを判定するものである。ここで許容角度範囲（±α）を例えばα＝４５°とすると、式（１）の示す範囲は、具体的には次式（１ａ）、（１ｂ）のいずれかを満たしているか否かを判断することになる。
【００５８】
４５°≦  θ  ≦  １３５°                              （１ａ）
−４５°≧  θ  ≧−１３５°                              （１ｂ）
尚、上記した「直交相当」とは、解除軸１変数に相当する軸に対して、これと直交する（９０°をなす）角度を中心として±４５°の範囲をいうもので、ダイレクトティーチングでアームを回転操作する際に、対象とする軸の周りのみの旋回を独立して実施でき、連動して旋回させることがない軸との交差角度の範囲を示すものである。したがって、２つの軸の交差角度θとして、直交角度である９０°を中心として許容できる範囲は必ずしも±４５°とする必要はなく、それよりも狭い許容範囲を設定することもできる。
【００５９】
また、上記の許容範囲を狭くすることは、ダイレクトティーチングを実施する際に同時にブレーキを解除する同時解除対象軸の判定条件を厳しくすることになるが、これはダイレクトティーチングの実施時の安全性を高めることとトレードオフの関係にあり、使用者により所望の範囲に設定することができる。
【００６０】
次に、コントローラ３は、上記した式（１ａ）または（１ｂ）の条件を満たしていない場合には、ループカウント値が「６」以下であることを条件として（ループカウント値は「２」であるから、ステップＢ９でＹＥＳ）、ループカウント値を「１」インクリメント（＝「３」）して（ステップＢ１０）ステップＢ６に戻り、再びループカウントアプローチとしてループカウントアプローチの軸つまり第３軸Ｌ３のアプローチを算出する（ステップＢ６）。
【００６１】
以下、同様にして、コントローラ３は、第１軸Ｌ１と第３軸Ｌ３との各ベクトルがなす角度θを計算し（ステップＢ７）、「直交相当」であるか否かを判定する（ステップＢ８）。このようにして次々とループカウントを増やしていって「直交相当」の回転関節軸が存在するか否かを判定し、条件に合致する軸が存在する場合には（ステップＢ８でＹＥＳ）、該当するループカウント値の軸についてブレーキを解除してフリー状態に制御する（ステップＢ１１）。
【００６２】
続いて、コントローラ３は、解除軸１変数の値の軸つまり第１軸Ｌ１のブレーキを解除してフリー状態に制御する（ステップＢ１２）。尚、上記の条件を判定する際に、ループカウント値が「６」を超えても条件に合致する軸が存在しない場合、つまり第６軸Ｌ６まで実施しても条件に該当しない場合（ステップＢ９でＮＯ）には、解除軸１変数の値の軸つまり第１軸Ｌ１のみをブレーキ解除する（ステップＢ１２）。
【００６３】
上記のように、２つの軸であるループカウント値の軸および解除軸１変数の値の軸を同時にブレーキ解除した場合、あるいは解除軸１変数の値の軸のみをブレーキ解除した場合のいずれの場合においても、任意時間（例えば一定時間１ｍｓ）だけ解除する（ステップＢ１３）。これにより、条件が合致したときには同時に２軸が、合致しない場合には１軸がブレーキ解除されてフリーの状態となるので、この間にフリーになっている軸に関連するアームの移動を行うことができる。任意時間が経過すると、コントローラ３は、フリー状態にした軸についてブレーキをかけて全軸をロック状態に戻す。
【００６４】
次に、ダイレクトティーチング作業がまだ終了していないので（ステップＢ１４でＮＯ）、コントローラ３は、解除軸１変数の値が「６」になっているか否かを判断した上で（ステップＢ１５でＮＯ）、解除軸１変数の値を「１」インクリメントして「２」とする（ステップＢ１６）。インクリメントした解除軸１変数の値はまだ「６」ではないので（ステップＢ１７でＮＯ）、ステップＢ２に戻って解除軸１変数の値の軸である第２軸Ｌ２について、上記と同様の処理を実施する。具体的には、ステップＢ２〜Ｂ１４を繰り返し実施する。
【００６５】
このステップＢ２〜Ｂ１４を繰り返す場合、第２軸Ｌ２と同時にブレーキ解除が可能なのかどうかを判定の対象となる軸（同時解除対象軸）は、第３軸Ｌ３〜第６軸Ｌ６である（実際の判定ではステップＣでＹＥＳとなるのは第４軸Ｌ４）。同様にして、解除軸１変数の軸が第３軸Ｌ３の場合は、同時解除対象軸は第４軸Ｌ４〜第６軸Ｌ６であり、第４軸Ｌ４では同時解除対象軸は第５軸Ｌ５および第６軸Ｌ６、第５軸Ｌ５では同時解除対象軸は第６軸Ｌ６のみとなる。
【００６６】
また、解除軸１変数が「６」の場合には、ステップＢ１６で「５」から「６」にインクリメントされた時点で、ステップＢ１７でＹＥＳの判定となるので、上記したステップを繰り返すことなく直接ステップＢ１２に進み、第６軸Ｌ６のみをブレーキ解除してフリー状態とする。
【００６７】
これにより、第２軸Ｌ２のブレーキ解除の際に条件の合致する軸が存在する場合にはその軸のブレーキも同時に解除し、存在しない場合には、第２軸Ｌ２のみのブレーキ解除を行う。このようにして、全ての回転関節軸Ｌ１〜Ｌ６について順次ブレーキ解除の動作を行うと、１回のブレーキ解除サイクルが終了することになる。この時、ダイレクトティーチング作業が終了してロボット２の位置が教示位置（図４（ｍ）の状態）に設定されていれば終了し（ステップＢ１４）、そうでない場合には、繰り返し上記のブレーキ解除サイクルを実施する。
【００６８】
この場合、コントローラ３は、解除軸１変数の値が「６」になっているので（ステップＢ１５でＹＥＳ）、解除軸１変数の値を再び「１」に設定して、ステップＢ２に戻り、上記のステップＢ２〜Ｂ１７を繰り返し実行する。そして、ダイレクトティーチング作業の終了がティーチングペンダント４から入力操作されると、コントローラ３は、ステップＢ１４でＹＥＳとなって制御プログラムを終了する。
【００６９】
このような第２の実施形態によれば、第１の実施形態の効果に加えて、同時に２つの軸についてブレーキ解除を行えるので、ダイレクトティーチングの作業に際してアームの移動の自由度を高めることができる。また、この場合でも、解除軸１変数の値の軸と同時にブレーキ解除される軸とが「直交相当」の条件を満たしているので、一方の軸の周りの回動操作で他方の軸の周りに連動して移動するのを抑制でき、これによって互いに教示動作を阻害することなく移動させることができる。
【００７０】
第２の実施形態においても、ブレーキ解除サイクルの単位でダイレクトティーチングの終了判断をしているが、ブレーキ解除ステップ毎にダイレクトティーチングの終了判断をするようにしても良い。
【００７１】
（第３の実施形態；請求項９）
図８は本発明の第３の実施形態を示すもので、以下、第２の実施形態と異なる部分について説明する。この第３の実施形態では、解除軸１変数の値の軸に対して、他のすべての軸について「直交相当」であるか否かを判定してブレーキ解除を行うところが第２の実施形態と異なるところである。
【００７２】
第２の実施形態で解除軸１変数の値の軸について同時にブレーキ解除をする対象としてループカウントの値を「１」ずつインクリメントした値が「６」に達した時点で終了していたのに対して、「６」に達した後、「１」に戻り解除軸１変数の値まで判定を行うようにしている。
【００７３】
即ち、図８に示すように、コントローラ３は、解除軸１変数を「１」に設定し（ステップＣ１）、全軸Ｌ１〜Ｌ６をロック状態に制御する（ステップＣ２）。次に、各軸Ｌ１〜Ｌ６について、順変換を実行して各アーム６〜１１の位置を演算する（ステップＣ３）。続いて、コントローラ３は、ループカウント値として「１」を設定し（ステップＣ４）、解除軸候補変数の値を解除軸１変数に「１」を加えた値つまり「２」に設定する（ステップＣ５）。解除軸候補変数は、同時解除対象軸を設定するための変数である。
【００７４】
次に、コントローラ３は、解除軸１アプローチとして解除軸１変数の軸つまり第１軸Ｌ１のアプローチを算出する（ステップＣ６）。続いて、解除軸候補アプローチとして解除軸候補変数の軸つまり第２軸Ｌ２のアプローチを算出する（ステップＣ７）。
【００７５】
続いて、コントローラ３は、上記ステップステップＣ６，Ｃ７で算出した解除軸１アプローチと解除軸候補アプローチとの両方のベクトルの角度を計算する（ステップＣ８）。前述同様にして、ここでは、第１軸Ｌ１と第２軸Ｌ２との交差角度θを計算する。そして、計算結果として得られたベクトル間の交差角度θが、「直交相当」であるかすなわち前述の式（１）を満たしているか否かを判断する（ステップＣ９）。
【００７６】
以下、コントローラ３は、式（１）を満たしている解除軸候補が存在するか否かを順次判定していく。まず、ループカウント値が「６」以下である場合（ステップＣ１０でＹＥＳ）には、解除軸候補変数の値が「６」に達するまで（ステップＣ１１でＮＯ）、解除軸候補変数の値を「１」インクリメントする（ステップＣ１２）と共にループカウント値を「１」インクリメントして（ステップＣ１３）、ステップＣ７に戻り、上記のステップＣ７〜Ｃ１３を繰り返し実行する。
【００７７】
この後、「直交相当」の回転関節軸が判定されないまま（ステップＣ９でＮＯ）解除軸候補変数の値が「６」に達した場合には（ステップＣ１１でＹＥＳ）、解除軸候補変数の値を「１」に設定して（ステップＣ１４）ステップＣ１３を経て「直交相当」の軸が存在するか否かを判定する。これにより、解除軸１変数の値よりも小さい値の軸についても「直交相当」の軸が存在するか否かの判定が行われることになる。
【００７８】
コントローラ３は、上記の判定の結果、「直交相当」の軸が存在する場合には（ステップＣ９でＹＥＳ）、その「直交相当」の軸である解除軸候補変数の値の軸をブレーキ解除してフリー状態とし（ステップＣ１５）、続いて解除軸１変数の値の軸をブレーキ解除してフリー状態とする（ステップＣ１６）。また、判定の結果、「直交相当」の軸が存在しない場合には（ステップＣ１０でＮＯ）、解除軸１変数の値の軸のみをブレーキ解除してフリー状態とする（ステップＣ１６）。
【００７９】
これにより、解除軸１変数の値の軸について上位の値の軸について「直交相当」の軸が存在しない場合でも、下位の値の軸について「直交相当」の軸が存在するか否かを判定するので、同時にブレーキ解除される軸が発生する確率が高くなる。
【００８０】
コントローラ３は、解除軸１変数の軸と「直交相当」の軸が存在した場合にはその軸とをフリーにした状態で、任意時間（例えば１ｍｓの一定時間）だけ待った（ステップＣ１７）後、全軸をロック状態に戻す。そして、以上のようにして解除軸１変数の軸である第１軸Ｌ１について「直交相当」の軸の判定とブレーキ解除を行うブレーキ解除ステップが終了すると、ダイレクトティーチングの作業が終了したか否かを判断し（ステップＣ１８）、ＮＯの場合には、続いて解除軸１変数を「１」インクリメントして（ステップＣ２０）、再びステップＣ２に戻り、上記したステップＣ２〜Ｃ１７のブレーキ解除ステップを繰り返し実行する。
【００８１】
このようにして、解除軸１変数の値が「６」になるまでの動作を１回のブレーキ解除サイクルとして実行し、各軸Ｌ１〜Ｌ６について順次「直交相当」の軸が存在するか否かを判断して存在する場合には同時にブレーキ解除を行ってロボット２のティーチング動作を実施できるようにする。
【００８２】
そして、ブレーキ解除サイクルが１サイクル終了した時点でダイレクトティーチング作業が終了していない場合（ステップＣ１８でＮＯ）には、解除軸１変数の値が「６」になっているので（ステップＣ１９でＹＥＳ）、コントローラ３は、解除軸１変数を「１」に再設定し（ステップＣ２１）、且つ解除軸候補変数を「０」に設定して（ステップＣ２２）、再びステップＣ２に戻り、上記したブレーキ解除ステップを繰り返し実行する。この後、ダイレクトティーチング作業が終了した旨の入力がティーチングペンダント４などから入力されると、コントローラ３は、ダイレクトティーチングの制御動作を終了する（ステップＣ１８でＹＥＳ）。
【００８３】
このような第３の実施形態によっても、第１、第２の実施形態と同様の効果を得ることができるとともに、解除軸１変数の値の軸について上位の値の軸について直交相当の軸が存在しない場合でも、下位の値の軸について直交相当の軸が存在するか否かを判定するので、同時にブレーキ解除される軸が発生する確率が高くなり、ダイレクトティーチングにおけるアームの移動の自由度が高くなり、作業性の向上を図ることができる。
【００８４】
尚、上記実施形態では、ダイレクトティーチング作業の終了を、ブレーキ解除ステップ毎に判定しているが、ブレーキ解除サイクル単位で判定することもできる。
（第４の実施形態；請求項１，２，３）
図９〜図１２は本発明の第４の実施形態を示すもので、以下、第１の実施形態と異なる部分について説明する。この実施形態においては、第１の実施形態と同様に、複数の軸、つまり第１軸Ｌ１〜第６軸Ｌ６について予め設定された順序でブレーキ解除ステップ（開放対象となる所定の軸はモータのブレーキを解除した状態で、他の残りの軸はモータのブレーキをかけた状態のままとするブレーキ解除状態を所定時間だけ実施するステップ）を実行する。ブレーキ解除ステップは、第１の実施形態と同様に、予め設定された順番が1回りすることを１周期（１ブレーキ解除サイクル）として繰り返し実行される。この１周期の所要時間は、固定的で一定の時間、本実施形態では、６０ｍｓに定められている。
【００８５】
１周期内で、各軸は順にモータのブレーキが解除されるが、このブレーキ解除時間（以下、開放時間）は、第１の実施形態では、全ての軸について一律に定められた一定の時間（１ｍｓ）であったが、本実施形態では、前周期における移動量が多い軸ほど長い時間となるように移動量に比例して長くなるように構成されている。
【００８６】
本実施形態の場合、各軸の開放時間Ｔk(n)は、固定的に確保される固定開放時間Ｔkf（本実施形態では１ｍｓ）に、移動量に応じて変わる可変開放時間Ｔkv(n)を加算した時間として設定される。なお、１周期の所要時間は６０ｍｓ、そのうち固定開放時間Ｔkfは６軸全体で６ｍｓであるから、可変開放時間Ｔkv(n)は全体で５４ｍｓであり、この５４ｍｓが各軸に分配される。
【００８７】
各軸の可変開放時間Ｔkv(n)は、初期値として予め設定された基準時間Ｔkv(0)（本実施形態では９ｍｓ）に、各軸の前周期（ｎ−１）での移動量を基にして求めた変化係数Ｃk(n-1)を乗じて算出する。各軸の変化係数は次のようにして求める。まず、前周期における各軸の移動量Ｍk(n-1)と全軸の平均移動量Ｍave(n-1)とを算出し、各軸の移動量Ｍk(n-1)から平均移動量Ｍave(n-1)を差し引いた値を各軸の偏差移動量ΔＭk(n-1)とする。次に、各軸の偏差移動量ΔＭk(n-1)の値が同符号のもの（プラスのもの、或いはマイナスのもの）を加算した値の絶対値を分配分母係数Ｄとして算出し、各軸の偏差移動量ΔＭk(n-1)を分配分母係数Ｄで除した値に「１」を加算してその値を変化係数Ｃk(n-1)として算出する。そして、前述のように、可変開放時間の基準時間Ｔkv(0)（９ｍｓ）に変化係数Ｃk(n-1)を乗じたものを次回周期（ｎ）における各軸の可変開放時間Ｔkv(n)として設定する（以上、第１の可変開放時間設定処理）。
【００８８】
従って、各軸の可変開放時間は、前周期での移動量の偏差に正比例する部分（基準時間×偏差移動量／分配分母係数）を有し、この可変開放時間と固定開放時間の和として求められる開放時間は、前周期の各軸の移動量が多いほど長い時間に設定されることとなる。ここで、各軸の移動量は回転角度で表わし、回転した角度の累計として表わすものとする。例えば、一方向に２°回転し、逆方向に２°回転した場合、移動量は４°として表わす。
【００８９】
さて、作業者によりダイレクトティーチングのモードが設定されると、コントローラ３は、図９に示すダイレクトティーチングの制御プログラムを実行する。つまり、コントローラ３は、まず、第１回目のブレーキ解除サイクルを実行するために、各軸のブレーキの固定開放時間および可変開放時間を初期値として予め設定された基準時間に設定する（図９のステップＤ１で「ＮＯ」、ステップＤ２）。ここで、各軸の固定開放時間Ｔkfは固定的で１ｍｓに設定されているから、固定開放時間の基準時間は１ｍｓであり、可変開放時間の基準時間Ｔkv(0)は、前述のように９ｍｓに設定されているから、各軸に与えられる開放時間Ｔk(n)は１０ｍｓである。なお、可変開放時間の基準時間は、１周期における全体の可変開放時間（５４ｍｓ）を６つの各軸に均等に配分した値として設定されたものである。
【００９０】
各軸の開放時間Ｔk(n)を設定すると、コントローラ３は、第１回目のブレーキ解除サイクルの実行に入る。このブレーキ解除サイクルは、図１０に示されているように、第１軸Ｌ１から第６軸Ｌ６まで軸番号順にブレーキ解除ステップを実施することによって行われる。このことは第１の実施形態と同様であるが、第１の実施形態との相違は、各軸のブレーキ解除ステップに入る前に当該軸の現在角度を検出して例えばＲＯＭ１３に記憶し（第１軸ではステップＥ１）、ブレーキの解除中は、回転方向、逆転した場合にはその時の回転角度をＲＯＭ１３に記憶し（第１軸ではステップＥ４）、ブレーキ解除ステップの終了後に当該軸の現在角度を検出してＲＯＭ１３に記憶する（第１軸ではステップＥ５）ところにある。そして、このブレーキ解除ステップ中の各軸の累計回転角度を算出し、この累計値を各軸の移動量としてＲＯＭ１３に記憶する（図９のステップＤ４）。
【００９１】
第１回目のブレーキ解除サイクルを終了すると、コントローラ３は、次回である第２回目のブレーキ解除サイクルでの各軸の開放時間Ｔk(2)を、前周期での各軸の移動量に応じた時間に設定する演算を行う（図９のステップＤ５で「ＮＯ」、ステップＤ１で「ＹＥＳ」、ステップＤ３）。この次回のブレーキ解除サイクルでの各軸の開放時間を求める制御プログラムは図１１に示されている。
【００９２】
つまり、各軸の開放時間Ｔk(n)の算出は、まず、前周期（ｎ−１）での全軸の平均移動量Ｍave(n-1)を求めることから始まる（ステップＦ１）。次に、コントローラ３は、前周期（ｎ−１）での各軸の移動量Ｍk(n-1)から平均移動量Ｍave(n-1)を差し引き、その値を偏差移動量ΔＭk(n-1)とする（ステップＦ２）。続いて、コントローラ３は、この各軸の偏差移動量ΔＭk(n-1)のうち、符号が同じもの、例えば符号がプラス（＋）の偏差移動量の総和を求め、これを分配分母係数Ｄとする（ステップＦ３）。なお、マイナス（−）の偏差移動量の総和を求めてその絶対値をとっても、同じ値の分配分母係数Ｄが得られる。その後、コントローラ３は、偏差移動量ΔＭk(n-1)を分配分母係数Ｄで除した値に「１」を加算し、これを変化係数Ｃk(n-1)とする（ステップＦ４）。そして、コントローラ３は、各軸の変化係数Ｃk(n-1)に可変開放時間の基準時間Ｔkv(0)を乗じて各軸の可変開放時間Ｔkv(n)を求め（ステップＦ５）、最後に、各軸について固定開放時間Ｔkfと可変開放時間Ｔkv(n)とを加算し、これを各軸の開放時間として設定し（ステップＦ６）、以上により、次周期での各軸の開放時間の計算を終了する。
【００９３】
このようにして次周期での各軸の開放時間を求めると、コントローラ３は、次の周期のブレーキ解除サイクルを実行する（図９のステップＤ４）。このブレーキ解除サイクルの実行時においても、上述したと同様に、各軸の移動量を求め、そして、この移動量を基に、次回のブレーキ解除サイクルでの各軸の開放時間を求める。このようにして次々と前周期での各軸の移動量を基に、各軸の開放時間を求めてブレーキ解除サイクルを実行することをロボット先端が教示位置に移動するまで継続して行う。
【００９４】
図１２はブレーキ解除サイクルの第１回目から第３回目までの各周期について、各軸の移動量と次周期の各軸の開放時間を示したものである。なお、図１２では、第１軸Ｌ１〜第６軸Ｌ６をＪ１〜Ｊ６で示している(図１４、図１５、図１７も同じ)。この図１２により、例えば第１軸Ｌ１と第５軸Ｌ５について、第２回目の周期における開放時間の計算例を説明すると、まず、第１回目で第１軸Ｌ１〜第６軸Ｌ６の総移動量が３°で、平均移動量Ｍave(1)は０．５°となるから、偏差移動量ΔＭk(1)は第１軸Ｌ１が＋１．５、第２軸Ｌ２が＋０．５、第３軸Ｌ３〜第６軸Ｌ６がそれぞれ−０．５となり、分配分母係数Ｄは符号がプラスの第１軸Ｌ１と第２軸Ｌ２の偏差移動量ΔＭk(1)を合計した値２となる。そして、各軸の変化係数Ｃk(1)は、各軸の偏差移動量ΔＭk(1)を分配分母係数Ｄで除した値に「１」を加算したものであるから、第１軸Ｌ１の変化係数Ｃk(1)は［（１．５／２）＋１］＝１．７５、第５軸Ｌ５の変化係数Ｃk(1)は［（−０．５／２）＋１］＝０．７５となる。各軸の可変開放時間Ｔkv(2)は、可変開放時間の基準時間Ｔkv(0)に変化係数Ｃk1を乗じたものであるから、第１軸Ｌ１の可変開放時間Ｔkv(2)は（９ｍｓ×１．７５）＝１５．７５ｍｓ、第５軸Ｌ５の可変開放時間Ｔkv(2)は（９ｍｓ×０．７５）＝６．７５ｍｓとなる。開放時間は、固定開放時間Ｔkfと可変開放時間Ｔkv(n)の和であるから、第１軸Ｌ１の開放時間は（１ｍｓ＋１５．７５ｍｓ）＝１６．７５ｍｓ、第５軸Ｌ５の開放時間は（１ｍｓ＋６．７５ｍｓ）＝７．７５ｍｓとなる。このようにして次の１周期における各軸のブレーキ開放時間が求められるのである。
【００９５】
このように本実施形態によれば、各軸のブレーキ解除時間（開放時間）が固定開放時間と前周期の移動量に応じて変わる可変開放時間とを加算した時間として設定されるので、移動量が少ない軸であっても開放時間として固定開放時間だけは確保され、この固定開放時間によって、各軸について毎周期必ず移動可能なブレーキ解除状態が確保される。
【００９６】
また、前周期の移動量が多い軸については、次周期でも移動が優先して行えるように、前周期での移動量が多ければ、それだけ長い可変開放時間が設定されるので、現在のティーチングの状況を反映した開放時間とすることができる。特に、本実施形態では、１周期６０ｍｓの中で、可変開放時間が合計で５４ｍｓに限定されているという事情下にあって、各軸の可変開放時間の設定に分配分母係数を算出して配分をするようにしている。この分配分母係数は、各軸の移動量から平均移動量を差し引いて求めた各軸の偏差移動量のうち、同符号のものを加算した値であるから、各軸の移動量実績が数％〜数十％という増加量に圧縮されて評価されることになる。このため、前周期での移動量が多い軸に一気に多くの時間が配分されてしまうことを抑制しながら、全軸に適切な時間配分を行うことができる。例えば、図１２に示されているように、前周期の移動量が「０」の軸、例えば、第５軸Ｌ５は第１回目、第２回目、第３回目の移動量が「０」であるが、その軸であっても、次周期の第２回目、第３回目、第４回目では、可変開放時間は「０」ではなく、６．７５ｍｓ（固定開放時間を併せて７．７５ｍｓ）という時間が確保されている。
このように、前周期での移動量が多い軸に一気に多くの時間が配分されてしまうことを抑制しながら、全軸に適切な時間配分を行うことから、手先を教示位置の近くまで動作させた後、当該手先の位置を微調整するときのように、各軸を細かく動作させたい場合に、各軸のブレーキ解除時間が適切に確保されて、各軸が容易に動作するようになり、操作性に優れたものとなる。
【００９７】
（第５の実施例；請求項１，２，４，６）
図１３および図１４は本発明の第５の実施形態を示す。この実施形態において、各軸の可変開放時間を求める場合、前周期の平均移動量Ｍave(n-1)を求め、各軸の移動量から平均移動量を差し引いて偏差移動量ΔＭave(n-1)を求めるところまでは第４の実施形態と同様である。第４の実施形態との相違は以下の通りである。
つまり、偏差移動量ΔＭave(n-1)を求めた後、最小の偏差移動量ΔＭave(n-1)を適宜定めた所定の基準移動量、例えば「１°」で除し、その値を増加率とする。本実施形態の場合、基準移動量が１°であるから、偏差移動量の値がそのまま増加率となる。
【００９８】
そして、各軸の増加率の最小値が「−１」以上のとき、各軸の増加率に「１」を加算したものを各軸の変化係数Ｃk(n-1)とする。また、各軸の増加率中に「−１」未満のものがあるときには、最も小さい増加率Ｍs(n-1)の絶対値の逆数を圧縮係数Ｐ(n-1)として算出し、各軸の増加率に圧縮係数を乗じてから「１」を加算したものを変化係数Ｃk(n-1)とする。以上のようにして変化係数を求めた後、可変開放時間の基準時間Ｔkv(0)に変化係数Ｃk(n-1)を乗じたものを今回周期の可変開放時間として設定する（以上、第２の可変開放時間設定処理）。
【００９９】
以上のように、前周期の各軸の移動量に基づいて第ｎ番目の周期の開放時間を設定するための制御の内容を図１３を参照しながら説明する。前周期（ｎ−１）のブレーキ解除サイクルが終了すると、コントローラ３は、前周期の全軸の平均移動量Ｍave(n-1)を求め（ステップＧ１）、続いて各軸の偏差移動量ΔＭｋ(n-1)を算出する（ステップＧ２）。そして、コントローラ３は、偏差移動量ΔＭｋ(n-1)をそのまま増加率とし（ステップ３）、その増加率ΔＭｋ(n-1)の中で最小のものを検索し(ステップＧ４)、最小の増加率Ｍs(n-1)が予め設定されたしきい値である「−１」未満であるか否かを判断する(ステップＧ５)。
【０１００】
最小の増加率が「−１」以上である場合（ステップＧ５で「ＮＯ」）、コントローラ３は、各軸の増加率ΔＭｋ(n-1)に「１」を加算し、その値を各軸の変化係数Ｃk(n-1)とする（ステップＧ６）。そして、コントローラ３は、可変開放時間の基準時間Ｔkv(0)に各軸の変化係数Ｃk(n-1)を乗じて各軸の可変開放時間Ｔkv(n)を算出し（ステップＧ７）、固定開放時間Ｔkfに各軸の可変開放時間Ｔkv(n)を加算して各軸の開放時間Ｔk(n)とする(ステップＧ１１)。
【０１０１】
最小の増加率が「−１」未満である場合（ステップＧ５で「ＹＥＳ」）、コントローラ３は、最小の増加率Ｍs(n-1)の絶対値の逆数を圧縮係数Ｐ(n-1)とし（ステップＧ８）、各軸の増加率ΔＭｋ(n-1)に圧縮係数Ｐ(n-1)を乗じ、その積に「１」を加算した値を各軸の変化係数Ｃk(n-1)とする（ステップＧ９）。そして、コントローラ３は、可変開放時間の基準時間Ｔkv(0)に各軸の変化係数Ｃk(n-1)を乗じて各軸の可変開放時間Ｔkv(n)を算出し（ステップＧ１０）、固定開放時間Ｔkfと各軸の可変開放時間Ｔkv(n)を加算して各軸の開放時間Ｔk(n)とする(ステップＧ１１)。
【０１０２】
図１４はブレーキ解除サイクルの第１回目から第３回目までの各周期について、増加率の最小値が「−１」以上のときの各軸の移動量と次周期の各軸の開放時間を示したものである。なお、この場合には、圧縮係数の概念を取り入れなくとも良いが、図１４には、後述する図１５との関係で、圧縮係数「１」として示した。
この図１４により、例えば第１軸Ｌ１と第５軸Ｌ５について、第２回目の周期における開放時間の計算例を説明すると、まず、前周期である第１回目の周期で第１軸Ｌ１〜第６軸Ｌ６の移動量の合計が３°であるから、平均移動量Ｍaveは０．５°となる。偏差移動量ΔＭk(1)は、第１軸Ｌ１が＋１．５、第２軸Ｌ２が＋０．５、第３軸Ｌ３〜第６軸Ｌ６がそれぞれ−０．５となる。各軸の偏差移動量ΔＭk(1)がそのまま各軸の増加率となるから、その増加率のうち最小のものは「−０．５」で、「−１」以上である。そこで、各軸の変化係数Ｃk1は、各軸の偏差移動量ΔＭk(1)に「１」を加算したものなるから、第１軸Ｌ１の変化係数Ｃk(1)は（１．５＋１）＝２．５、第５軸Ｌ５の変化係数Ｃk(1)は（−０．５＋１）＝０．５となる。各軸の可変開放時間Ｔkv2は、可変開放時間の基準時間Ｔkv(0)に変化係数Ｃk1を乗じたものであるから、第１軸Ｌ１の可変開放時間Ｔkv(2)は（９ｍｓ×２．５）＝２２．５ｍｓ、第５軸Ｌ５の可変開放時間Ｔkv(2)は（９ｍｓ×０．５）＝４．５ｍｓとなる。開放時間は、固定開放時間Ｔkfと可変開放時間Ｔkv(n)の和であるから、第１軸Ｌ１の開放時間は（１ｍｓ＋２２．５ｍｓ）＝２３．５ｍｓ、第５軸Ｌ５の開放時間は（１ｍｓ＋４．５ｍｓ）＝５．５ｍｓとなる。
【０１０３】
また、図１５はブレーキ解除サイクルの第１回目から第３回目までの各周期について、第２回目と第３回目に増加率の最小値が「−１」未満となるときの各軸の移動量と次周期の各軸の開放時間を示したものである。この図１５により、例えば第１軸Ｌ１と第５軸Ｌ５について、第３回目の開放時間の計算例を説明すると、まず、前周期である第２回目で軸Ｌ１〜第６軸Ｌ６の総移動量が６．６°で、平均移動量Ｍave(2)は１．１°となるから、偏差移動量ΔＭk(2)は第１軸Ｌ１が＋２．７、第２軸Ｌ２が１．７、第３軸Ｌ３〜第６軸Ｌ６がそれぞれ−１．１となる。各軸の偏差移動量ΔＭk2がそのまま各軸の増加率となるから、その増加率のうち最小のものΔＭs(2)は「−１．１」で、「−１」未満である。この増加率の最小のものが「−１」未満場合には、最小の増加率の絶対値の逆数１／−１．１＝０．９０９０９１が圧縮係数Ｐ2となる。そして、各軸の増加率に圧縮係数を乗じたものに「１」を加算したものが各軸の変化係数であるから、第１軸Ｌ１の変化係数Ｃk(2)は２．７×０．９０９０９１＋１＝３．４５４５４７、第５軸Ｌ５の変化係数Ｃk(2)は−１．１×０．９０９０９１＋１＝０となる。そして、可変開放時間Ｔkv(3)は、可変開放時間の基準時間に変化係数Ｃk(2)を乗じたものであるから、第１軸Ｌ１の可変開放時間Ｔkv(3)は（９ｍｓ×３．４５４５４７）＝３１．０９０９２３ｍｓ、第５軸Ｌ５の可変開放時間Ｔkv(3)は「０」となる。開放時間Ｔk(3)は、固定開放時間Ｔkfと可変開放時間Ｔkv(n)の和であるから、第１軸Ｌ１の開放時間Ｔk(3)は（１ｍｓ＋３１．０９０９２３ｍｓ）＝３２．０９０９２３ｍｓ、第５軸Ｌ５の開放時間Ｔk(3)は（１ｍｓ＋０ｍｓ）＝１ｍｓとなる。
【０１０４】
このように本実施形態によれば、各軸の増加率のうち、最低の増加率が「−１」以上である場合、各軸の増加率（偏差移動量に同じ）に「１」を加算したものを変化係数とし、この変化係数に基準時間を乗じたものを可変開放時間としたので、第４実施例の場合とは異なり、各軸の可変開放時間の設定の際に、該当する軸の前周期での移動量が比較的多いものについて、長い開放時間となるように設定することができる。また、可変開放時間の設定において、基準時間に加算する時間を、該当する軸の偏差移動量にほぼ正比例して多く配分をすることができるので、移動量が多い軸の可変開放時間を早い段階で優先して配分することができ、移動量が多い場合のダイレクトティーチングの作業性を優先させることができる。このため、ダイレクトティーチングの開始当初に、手先を教示位置に向かって大きく動かしたいような場合、その動作に対応して大きく動く軸に対して可変開放時間を多く配分できるようになるので、動かしたい軸を大きく動かして楽に手先を教示位置近くまで移動させることができるようになり、操作性に優れたものとなる。
【０１０５】
ここで、各軸の偏差移動量をそのまま増加率としたのでは、移動量が非常に少ない軸の偏差移動量が小さくなって当該軸の増加率が「−１」を下回る場合がある。すると、変化係数の符号がマイナスになり、その結果、可変開放時間の計算値がマイナスになり、固定開放時間と可変開放時間の和として求められる開放時間が、最小限確保すべき固定開放時間（１ｍｓ）よりも少ない開放時間、更に言えば開放時間が「０」となってしまうことがある。
【０１０６】
このようなことが生じないようにするために、本実施形態では、各軸の増加率のうち、最小のものが「−１」を下回る場合、各軸の変化係数を算出する際に、その最小の偏差移動量の絶対値の逆数を圧縮係数と定め、各軸の増加率に圧縮係数を乗じてから「１」を加算するようにした。このため、移動量が非常に少ない軸が移動量の多い軸に対して相対的に偏差移動量が小さくなってその増加率が「−１」を下回る場合に、圧縮係数を設定することで、移動量の多い軸に可変開放時間が多く配分されることを防止し、以て１周期が一定時間に定められている事情下で、移動量の非常に少ない軸でも最低限の固定開放時間（１ｍｓ）だけは確保できる。これにより、移動量の非常に少ない軸であっても、移動できなくなることを抑制しながら、移動量の多い軸に適切に可変開放時間を割り当てることができる。
【０１０７】
（第６の実施形態；請求項１，２，３，５，６）
図１６〜図１８は本発明の第６の実施形態を示すもので、第４の実施形態との相違は、可変開放時間の算出として、各軸のうちの特定の軸、例えば主軸（基本軸）としての第１軸Ｌ１の移動量が予め設定されたしきい値を超えるときには、第５の実施形態の第２の可変開放時間設定処理を実行するようにしたところにある。
【０１０８】
さて、作業者によりダイレクトティーチングのモードが設定されると、コントローラ３は、図１６に示すダイレクトティーチングの制御プログラムを実行する。この制御プログラムの実行に入ると、まず、コントローラ３は、可変開放時間の設定の処理のために前記第１の可変開放時間設定処理を選択する(ステップＨ１)。このため、第１回目のブレーキ解除サイクルは第４の実施形態の場合と同様に、各軸に与えられる開放時間を１０ｍｓに設定する。
【０１０９】
その後、コントローラ３は、第１回目のブレーキ解除サイクルの実行に入り、各軸の回転角度の累計を算出し記憶手段としてのＲＯＭ１３に記憶する（ステップＨ２）。そして、第１回目のブレーキ解除サイクルが終了すると、コントローラ３は、各軸の移動量を読み出し(ステップＨ３)、そのうち主軸としての第１軸Ｌ１の移動量が予め定められたしきい値、例えば３°を超えているか否かを判断する（ステップＨ４）。
【０１１０】
しきい値を超えていなければ（ステップＨ４で「ＮＯ」）、コントローラ３は、第１の可変開放時間設定処理により可変開放時間を算出してこの可変開放時間に１ｍｓを加算して各軸の開放時間を設定し（ステップＨ５）、第２回目のブレーキ解除サイクルを実行する（ステップＨ７で「ＮＯ」、ステップＨ２）。
【０１１１】
しきい値を超えていれば（ステップＨ４で「ＹＥＳ」）、コントローラ３は、前記第２の可変開放時間設定処理により可変開放時間を算出してこの可変開放時間に固定開放時間である１ｍｓを加算して各軸の開放時間を設定し（ステップＨ６）、第２回目のブレーキ解除サイクルを実行する（ステップＨ７で「ＮＯ」、ステップＨ２）。
【０１１２】
以後、上述のように、前周期での第１軸Ｌ１の移動量がしきい値を超えているか否かにより、第１の可変開放時間設定処理または第２の可変開放時間設定処理を選択して可変開放時間を算出し、ブレーキ解除サイクルを実行する。
【０１１３】
図１７は第１軸Ｌ１の移動量に応じて可変開放時間を第１の可変開放時間設定処理または第２の可変開放時間設定処理により算出して各軸の開放時間を求めた具体例を示す。この図１７において、第１回目、第２回目のブレーキ解除サイクルは第１の可変開放時間設定処理によるもの、第３回目、第４回目は第２の可変開放時間設定処理によるもの、第５回目は第１の可変開放時間設定処理によるものの開放時間を示す。
【０１１４】
図１８は上述のようにして算出した第１回目から第５回目までの各軸の開放時間の変化を示すグラフである。
このように本実施形態では、前周期での第１軸Ｌ１の移動量がしきい値を超えているか否かにより、第１の可変開放時間設定処理または第２の可変開放時間設定処理を選択して可変開放時間を算出する。第１軸Ｌ１は、ティーチング時、ロボット２を開始位置から教示位置に向かって動かすような場合に大きく動くが、手先を教示位置近くまで動かして微調整するような場合には小さな動きしかしない。このため、本実施形態によれば、ロボット２を大きく動かしたい場合には、その大きく動いた例えば第１軸Ｌ１について、次周期の開放時間も大きな動きにとって必要な長い時間が設定され（第２の可変開放時間設定処理）、また、手先の位置を微調整するような場合には、ロボット２を大きく動かす場合とは異なり例えば第１軸Ｌ１の動きも小さくなって全軸に適切な開放時間を配分することができ（第１の開放時間設定処理）、総じて、ダイレクトティーチング全体において各軸が容易に動作するようになり、操作性に優れたものとなる。
【０１１５】
（他の実施形態）
なお、本発明は上記し且つ図面に示す実施例に限定されるものではなく、以下のような拡張あるいは変形が可能である。
【０１１６】
実施形態では、６軸の回転関節軸すべてについて第１軸Ｌ１から順次ブレーキ解除の対象としているが、フランジ１１に取り付けるエンドエフェクタの種類によっては、第６軸Ｌ６を常時ブレーキ解除してもフランジ１１部分のアームの落下や不意の移動が無い場合があるので、第１軸Ｌ１〜第５軸Ｌ５をブレーキ解除ステップの対象として複数の軸のモータについて同時にブレーキ解除を行うこともでき、その場合に、作業性の向上を図ることができる。
【０１１７】
実施形態では、６軸のロボットについて説明したが、６軸に限られない。
第２あるいは第３実施形態では、解除軸１変数の値の軸と他の１つの軸をブレーキ解除してブレーキ解除ステップを実行する例を示しているが、「直交相当」に該当する軸は、３次元的には３軸が対象となりうるので、これを同様の条件を設定して計算により判定し、３軸について同時にブレーキ解除をすることもできる。また、この場合には、「直交相当」に該当する３軸であるから、ひとつの軸周りの回転操作するときに他のフリーな軸を連動させて回転させるのを防止することができる。
【０１１８】
各ブレーキ解除ステップにおけるブレーキ解除の時間を任意時間として例えば１ｍｓとした場合で示したが、これに限らず、適宜の時間を設定することができる。この場合、６軸Ｌ１〜Ｌ６までを順次ブレーキ解除するので、作業者にとっては、時間を長くすると１軸あたりの移動時間が増える一方で他の軸の自由度が低下するような感覚を受け、時間を短くすると１軸あたりの移動時間が少なくなる一方で全ての軸を速い速度で切り換えることでスムーズにダイレクトティーチングをできるような感覚を受ける。このような性質を考慮して適宜の時間を設定すれば、作業者の主観的な感覚を配慮しつつ作業性をも配慮したティーチングを行うことができる。
【０１１９】
第２あるいは第３の実施形態では、「直交相当」の軸の判定を、式（１）つまり直交角度９０°を中心として±４５°の範囲を設定したが、これに限らず、「直交相当」の意味する同時にブレーキ解除しても可能な範囲と判定できる交差角度であれば許容範囲を適宜に設定することができる。尚、この場合に、許容範囲を狭くすると直交に近い範囲に限定的になるので安全性の点で向上し、許容範囲を広くすると自由度を高めてダイレクトティーチングの作業性の点で向上する。
【０１２０】
また、「直交相当」の判定の許容角度は、第１軸Ｌ１〜第６軸Ｌ６の軸同士の組み合わせに応じてそれぞれに設定することもできる。組み合わせる軸によっては、許容範囲を広くできる場合もあり、逆に安全性を考慮して狭い方が良い場合もあるからである。
【０１２１】
各軸Ｌ１〜Ｌ６の移動量は、各アーム６〜１１の先端の移動距離（単位ｍｍ）で表わすようにしても良い。この場合、第５の実施形態において、最小の偏差移動量ΔＭave(n-1)を所定の基準移動量で除して増加率を求める場合に、当該基準移動量としては、例えば１００ｍｍに定める。
【０１２２】
第６の実施形態における特定の軸は第１軸Ｌ１に限らず、他の主軸(基本軸)である第２軸Ｌ２または第３軸Ｌ３としても良く、更に、別の軸Ｌ４〜Ｌ６のいずれかであっても良く、要は、手先の位置を大きく変える場合に、その手先の大きな動きに伴って大きく移動する軸であれば良い。
【０１２３】
第２の実施形態の、ブレーキを解除する回転関節軸の数を支障のない条件の下で増やすこと、つまり、予め定められた順序で設定される解除対象軸よりも順序が後の軸であって当該解除対象軸の現在の姿勢を基準にしてこれと直交相当の軸が存在する場合、この軸を同時解除対象軸として、解除対象軸と同時解除対象軸のブレーキを解除することは、第４の実施形態〜第６の実施形態に適用しても良い。
第３の実施形態の、解除対象軸よりも順序が後の軸に限られず、順序が前の軸についても解除対象軸と「直交相当」であるか否かを判定してブレーキ解除を行うことは、第４の実施形態〜第６の実施形態に適用しても良い。
【符号の説明】
【０１２４】
図面中、１はロボットシステム、２はロボット、３はコントローラ、５はベース、６はショルダ部、７は下アーム、８は第１の上アーム、９は第２の上アーム、１０は手首、１１はフランジ、１２はＣＰＵ、Ｍ１〜Ｍ６はモータ、Ｓ１〜Ｓ６はエンコーダである。
【図１】
0005454499.tif 000002
【図２】
0005454499.tif 000003
【図３】
0005454499.tif 000004
【図４】
0005454499.tif 000005
【図５】
0005454499.tif 000006
【図６】
0005454499.tif 000007
【図７】
0005454499.tif 000008
【図８】
0005454499.tif 000009
【図９】
0005454499.tif 000010
【図１０】
0005454499.tif 000011
【図１１】
0005454499.tif 000012
【図１２】
0005454499.tif 000013
【図１３】
0005454499.tif 000014
【図１４】
0005454499.tif 000015
【図１５】
0005454499.tif 000016
【図１６】
0005454499.tif 000017
【図１７】
0005454499.tif 000018
【図１８】
0005454499.tif 000019