(第1の実施形態;請求項1,7)
以下本発明の第1の実施形態について図1〜図6を参照して説明する。
図2はロボットのシステム1の外観構成を示している。このロボットシステム1は、ロボット2と、ロボット2を制御するコントローラ3と、コントローラ3に接続されたティーチングペンダント4とから構成されている。
ロボット2は、垂直6軸の多関節型ロボットとして構成されている。このロボット2は、ベース5と、このベース5に回転関節軸の第第1軸L1を中心に水平方向に旋回可能に支持されたショルダ部6と、このショルダ部6に回転関節軸の第2軸L2を中心に上下方向に旋回可能に支持された下アーム7と、この下アーム7に回転関節軸の第3軸L3を中心に上下方向に旋回可能に支持された第1の上アーム8と、この第1の上アーム8の先端部に回転関節軸の第第4軸L4を中心に捻り回転可能に支持された第2の上アーム9と、この第2の上アーム9に回転関節軸の第5軸L5を中心に上下方向に旋回可能に支持された手首10と、この手首10に回転関節軸の第6軸L6を中心に捻り回転可能に支持されたフランジ11とから構成されている。なお、ロボット先端であるフランジ11には、ワークを把持するハンドや、視覚検査のために用いるカメラなどのエンドエフェクタ(図示せず)が取り付けられるようになっている。
ベース5、ショルダ部6、下アーム7、第1の上アーム8、第2の上アーム9、手首10、フランジ11は、ロボット2におけるアームとして機能し、固定アームであるベース5を除く各アーム6〜11は、前段のアームに回転可能に支持された回転関節軸である第第1軸L1〜第6軸L6に固定連結されている。
次に、電気的なブロック構成を示す図1において、ロボット2には、上記した各アーム6〜11の回転関節軸である第1軸L1〜第6軸L6の周りに回転駆動させるためのサーボモータからなるモータM1〜M6が設けられている。モータM1〜M6の回転により、図示しない減速機構を介して各アーム6〜11が回転駆動されるように構成されている。また、各モータM1〜M6には、第1軸L1〜第6軸L6に連結されたエンコーダS1〜S6が設けられ、回転検出信号をコントローラ3に出力するように構成されている。
ロボット2の動作を制御するコントローラ3は、マイコンを主体とした構成であり、CPU12、記憶手段としてのROM13およびRAM14を備えている。ROM13は、一般的な読み出し専用のメモリに加えて、電気的に書き換え可能なフラッシュメモリ(EEPROMの一種)などのメモリも含むものである。このROM13には、後述するダイレクトティーチングに関する制御プログラムを含めてロボット2を駆動制御するための各種制御プログラムが記憶されている。
また、コントローラ3には、ロボット2のモータM1〜M6を駆動させるための駆動回路15が設けられている。コントローラ3には、ロボット2側の各エンコーダS1〜S6からの検出信号に基づいて各モータM1〜M6の回転角を検出する回転位置検出回路が設けられており、CPU12は、その回転角情報に基づいて駆動回路15に位置姿勢を制御するための制御信号を出力するように構成されている。
次に、ロボット2の各アーム6〜11の6つの回転関節軸である第1軸L1〜第6軸L6について説明する。ベース5および各アーム6〜11には、3次元の座標が規定されている。このうち、床面に据え付けられるベース5の座標系(図2に座標軸XYZで示す)は、不動の座標系で基準座標(ロボット座標)とされる。アーム6〜11の座標は、各アーム6〜11の回転関節軸の第1軸L1〜第6軸L6の回転中心軸線上に設定されており、アーム6〜11の回転によりロボット座標上での位置と姿勢が変化する。
ROM13には、ロボット座標上におけるショルダ部6の座標位置、ショルダ部6の座標上における下アーム7の座標位置、下アーム7の座標上における第1の上アーム8の座標位置、第1の上アーム8の座標上における第2の上アーム9の座標位置、第2の上アーム9の座標上における手首10の座標位置、手首10の座標上におけるフランジ11の座標位置、各アーム6〜11の長さなどの各種のパラメータが記憶されている。なお、以下では、各アーム6〜11の座標のロボット座標上の位置を、単に、各アーム6〜11の位置ということとする。
ロボット先端であるフランジ11の座標の原点は、当該フランジ11の先端面の回転中心に定められている。そして、CPU12は、座標変換の計算機能を有し、ロボット先端の位置(姿勢を含む;以下同じ)が与えられると、当該与えられた位置をロボット先端が取るような各アーム6〜10の回転角を演算(逆変換)できるようになっており、また、各アーム6〜11の回転角が与えられると、各アーム6〜11の位置を演算(順変換)できるようにもなっている。
ロボット2の動作を教示により設定する動作プログラムはティーチングペンダント4により作成されてROM13あるいはRAM14に記憶される。コントローラ3は、内部に記憶された制御プログラムに基づいて、ロボット先端の移動軌跡を演算し、そして、ロボット先端が開始位置から教示位置まで移動する間、当該ロボット先端の速度パターンが台形パターンや三角パターンなどの所定の速度パターンとなるように、サンプリングタイム毎のロボット先端の位置を演算する。
ロボット2の動作制御中、コントローラ3は、サンプリングタイム毎に、エンコーダS1〜S6から与えられる各モータM1〜M6の回転角から各アーム6〜10の回転角を演算し、各アーム6〜11の回転角からフランジ11の位置を演算して現在位置を検出する。そして、ロボット先端の現在位置の次の位置における各アーム6〜11の回転角をメモリから取得し、各アーム6〜11の回転角から各モータM1〜M6の回転角を演算して当該各回転角を各モータM1〜M6の目標回転角として駆動回路15に出力する。
次に、上記構成のロボットシステムにおいて、ロボット2のダイレクトティーチングを行う場合について図3〜図6を参照して説明する。
作業者によりティーチングペンダント4からダイレクトティーチングのモードが設定されると、コントローラ3は、図3に示すような手順によりダイレクトティーチングの制御プログラムを実行する。ダイレクトティーチングでは、作業者によりロボット2の各アーム6〜11を教示位置まで直接移動させて設定するものである。例えば図4に示すように、(a)に示す開始位置から(m)に示す教示位置まで移動させる場合で説明する。また、この実施形態では、回転関節軸である第1軸L1〜第6軸L6の設定順序は、第1軸L1から順次番号順に第6軸L6に移行するように設定されている。
この順序は、かならずしも第1軸L1から軸番号の順に設定する必要はなく、作業に応じて適宜所望の順序に設定できる。また、フランジ11を捻り動作させる第6軸L6については、取り付けられるエンドエフェクタによっては教示動作時には常時ブレーキ解除としてフリー状態とすることができる場合がある。
コントローラ3は、まず、第1軸L1のモータM1のブレーキを解除してフリー状態にするともに他の回転関節軸である第2軸L2〜第6軸L6のモータM2〜M6にダイナミックブレーキをかけてロック状態とする(図3のステップA1,A2)。コントローラ3は、この状態のまま任意時間として例えば予め設定された所定時間として1ms待って第1軸L1周りのダイレクトティーチングの動作を可能とする(ステップA3)。尚、この回転関節軸1軸分のブレーキ解除の動作をブレーキ解除ステップとしている。
上記の動作においては、図4(a)に示す状態から、第1軸L1周りの旋回移動がフリーとなる状態であるから、例えば図5(b)に示すように、作業者はアーム6つまりショルダ部6から上の部分を水平面内で回動させることができる。なお、説明の都合でロボット2の動きをわかりやすくするために、図5(b)の位置まで移動させたことを示しているが、実際には、1msの開放時間であるから、1回の移動量はわずかなものである。
上記の動作において、モータM1のブレーキを解除してフリー状態にするとは、モータM1を駆動する駆動回路15において、通電経路をオープン状態に制御することでモータM1の回動に自己制動がかからないように制御することをいう。また、モータM1にダイナミックブレーキをかけてロック状態にするとは、モータM1を駆動する駆動回路15において通電経路をショート状態にしてモータM1の回転動作に対する自己制動がかかるように制御することをいう。
次に、コントローラ3は、第2軸L2のモータM2のブレーキを解除してフリー状態にするとともに他の回転関節軸である第1軸L1、第3軸L3〜第6軸L6のモータM1,M3〜M6にブレーキをかけてロック状態とし(ステップA4,A5)、上述同様にこの状態のままで任意時間(同じく一定時間例えば1ms)待つ(ステップA6)。この状態では、第2軸L2周りの旋回がフリーとなるブレーキ解除ステップの状態であるから、作業者はアーム7つまり下アーム7を上下方向に旋回移動させてダイレクトティーチングを行うことができる。
以下、同様にしてコントローラ3は、第3軸L3以降の各軸についてモータM3〜M6を順次ブレーキ解除してフリー状態にし、他の回転関節軸についてはダイナミックブレーキをかけることで、いずれにおいても、1つの軸のみがフリー状態となるように制御している(ステップA7〜A18)。以上のようにして順次第1軸L1から第6軸L6に至るまで短時間(1msec)単位で開放されるので、全ての回転関節軸について所定間隔でダイレクトティーチングの作業を行うことができる。この一連のブレーキ解除ステップをすべての軸について行う動作をブレーキ解除サイクルとしている。
尚、1回のブレーキ解除サイクルでロボット2の位置を開始位置(図4(a))から目的とする教示位置(図4(m))に移動させることができない場合には(ステップA19でNO)、同様にしてブレーキ解除サイクルを繰り返し実行し(ステップA1〜A18)、ロボット2の位置が教示位置に移動できて、ダイレクトティーチング作業の終了がティーチングペンダント4から入力操作されると(ステップA19でYES)、コントローラ3は、ダイレクトティーチングモードを終了する。
ダイレクトティーチングによるロボット2の位置が図4(m)(あるいは図6(m))に示した教示位置に設定されると、この位置の変数データがティーチングペンダント4により取り込まれ、これによって動作プログラムのデータとして組み込むことができる。
このような第1の実施形態によれば、ダイレクトティーチングを実施する際に、コントローラ3により、第1軸L1〜第6軸L6までの6つの回転関節軸について、所定の順序で1軸ずつ一定時間毎にブレーキ解除をするように制御するので、特定の回転関節軸だけが一気に落下することを防止でき、教示作業における安全性を向上させることができる。
また、ブレーキ解除する回転関節軸を一定時間ごとに順次切り替えるので、換言すれば全軸について順次一定時間毎に動かすことができるようになり、ダイレクトティーチング時のような教示動作でのロボット2の手先10部分の動きが比較的遅い動きになる動作では、作業者にとっては全軸を同時に開放させたのと同じような感覚で操作することができるようになり、全軸を開放させる従来相当の応答性とほぼ同等のものとすることができる。
上記実施形態においては、一定時間(任意時間)として、1msを設定した場合を示したが、この一定時間はダイレクトティーチング作業を行う作業者の安全性を考慮して次のような原則を適用している。
すなわち、回転関節軸L1〜L6のモータM1〜M6を順次ブレーキ解除したときに、解除したモータが暴走した場合でも作業者の安全を確保できる時間を上限とするものである。ブレーキ解除をしたモータが異常な回転状態になった場合に、ロボット2の手先部分が移動する速度が上昇して作業者に万一衝突した場合でも事故とならない程度の移動速度となる範囲を想定している。
この場合、ロボット2の種類やスペックにも依存するが、ロボット2の手先の移動の危険速度が例えば250mm/s以上であるとすると、ブレーキ解除の直後からこの危険速度に達するまでの時間を想定して一定時間として設定することができる。また、ここではロボット2の手先にはエンドエフェクタが取り付けられていない状態、つまりロボット2の先端部が最も軽い状態で速く移動する場合でも危険速度に達しない時間を設定する。このため、実際には、エンドエフェクタが取り付けられた状態では、危険速度に達するまでにはまだ時間がかかる場合もある。
上記の原理に従って回転関節軸毎に一定時間を算出すると、その時間は軸毎に異なる時間が一定時間として得られることが予想される。したがって、回転関節軸毎に異なる一定時間を設定することもできるし、それらのうちの最短の時間を共通の一定時間として設定することもできる。この点、一定時間の設定には、ダイレクトティーチングの際の応答性の点も考慮して設定することが好ましい。
上記実施形態では、ブレーキ解除サイクルの単位でダイレクトティーチングの終了判断をしているが、ブレーキ解除ステップ毎にダイレクトティーチングの終了判断をするようにしても良い。
(第2の実施形態;請求項8)
図7は本発明の第2の実施形態を示すもので、以下、第1の実施形態と異なる部分について説明する。この実施形態においては、ブレーキを解除する回転関節軸の数を支障のない条件の下で2軸まで増やすようにしたところが異なる部分で、ダイレクトティーチングの際の位置姿勢の作業の自由度を高めるようにしたものである。
図7はダイレクトティーチングを実施する際のコントローラ3による制御の流れを示す図である。コントローラ3は、まず、解除軸1変数を「1」に設定し(ステップB1)、続いて全軸L1〜L6をロック状態に制御する(ステップB2)。この場合、各軸のロックは、各軸L1〜L6を駆動するモータM1〜M6にダイナミックブレーキ(DB)をかけることで制御する。
次に、各軸L1〜L6について、順変換を実行して各アーム6〜11の位置を演算する(ステップB3)。続いて、コントローラ3は、解除対象軸を設定するためのループカウント値として解除軸1変数の値に「1」を加算した値つまり「2」を設定し(ステップB4)、解除軸1アプローチとして解除軸1変数の軸つまり第1軸L1のアプローチを算出する(ステップB5)。次に、ループカウントアプローチとしてループカウント値「2」の軸つまりここでは第2軸L2のアプローチを算出する(ステップB6)。
続いて、コントローラ3は、上記ステップB5,B6で算出した解除軸1アプローチとループカウントアプローチとの両方のベクトルの角度を計算する(ステップB7)。つまり、ここでは、第1軸L1と第2軸L2との交差角度θを計算する。そして、計算結果として得られたベクトル間の交差角度θが、次式(1)を満たしているか否かを判断する(ステップB8)。
(90°−α)≦|θ|≦(90°+α) (1)
これは、ベクトル間の交差角度θが許容角度範囲(±α)で直交(=90°)する状態に相当している「直交相当」か否かを判定するものである。ここで許容角度範囲(±α)を例えばα=45°とすると、式(1)の示す範囲は、具体的には次式(1a)、(1b)のいずれかを満たしているか否かを判断することになる。
45°≦ θ ≦ 135° (1a)
−45°≧ θ ≧−135° (1b)
尚、上記した「直交相当」とは、解除軸1変数に相当する軸に対して、これと直交する(90°をなす)角度を中心として±45°の範囲をいうもので、ダイレクトティーチングでアームを回転操作する際に、対象とする軸の周りのみの旋回を独立して実施でき、連動して旋回させることがない軸との交差角度の範囲を示すものである。したがって、2つの軸の交差角度θとして、直交角度である90°を中心として許容できる範囲は必ずしも±45°とする必要はなく、それよりも狭い許容範囲を設定することもできる。
また、上記の許容範囲を狭くすることは、ダイレクトティーチングを実施する際に同時にブレーキを解除する同時解除対象軸の判定条件を厳しくすることになるが、これはダイレクトティーチングの実施時の安全性を高めることとトレードオフの関係にあり、使用者により所望の範囲に設定することができる。
次に、コントローラ3は、上記した式(1a)または(1b)の条件を満たしていない場合には、ループカウント値が「6」以下であることを条件として(ループカウント値は「2」であるから、ステップB9でYES)、ループカウント値を「1」インクリメント(=「3」)して(ステップB10)ステップB6に戻り、再びループカウントアプローチとしてループカウントアプローチの軸つまり第3軸L3のアプローチを算出する(ステップB6)。
以下、同様にして、コントローラ3は、第1軸L1と第3軸L3との各ベクトルがなす角度θを計算し(ステップB7)、「直交相当」であるか否かを判定する(ステップB8)。このようにして次々とループカウントを増やしていって「直交相当」の回転関節軸が存在するか否かを判定し、条件に合致する軸が存在する場合には(ステップB8でYES)、該当するループカウント値の軸についてブレーキを解除してフリー状態に制御する(ステップB11)。
続いて、コントローラ3は、解除軸1変数の値の軸つまり第1軸L1のブレーキを解除してフリー状態に制御する(ステップB12)。尚、上記の条件を判定する際に、ループカウント値が「6」を超えても条件に合致する軸が存在しない場合、つまり第6軸L6まで実施しても条件に該当しない場合(ステップB9でNO)には、解除軸1変数の値の軸つまり第1軸L1のみをブレーキ解除する(ステップB12)。
上記のように、2つの軸であるループカウント値の軸および解除軸1変数の値の軸を同時にブレーキ解除した場合、あるいは解除軸1変数の値の軸のみをブレーキ解除した場合のいずれの場合においても、任意時間(例えば一定時間1ms)だけ解除する(ステップB13)。これにより、条件が合致したときには同時に2軸が、合致しない場合には1軸がブレーキ解除されてフリーの状態となるので、この間にフリーになっている軸に関連するアームの移動を行うことができる。任意時間が経過すると、コントローラ3は、フリー状態にした軸についてブレーキをかけて全軸をロック状態に戻す。
次に、ダイレクトティーチング作業がまだ終了していないので(ステップB14でNO)、コントローラ3は、解除軸1変数の値が「6」になっているか否かを判断した上で(ステップB15でNO)、解除軸1変数の値を「1」インクリメントして「2」とする(ステップB16)。インクリメントした解除軸1変数の値はまだ「6」ではないので(ステップB17でNO)、ステップB2に戻って解除軸1変数の値の軸である第2軸L2について、上記と同様の処理を実施する。具体的には、ステップB2〜B14を繰り返し実施する。
このステップB2〜B14を繰り返す場合、第2軸L2と同時にブレーキ解除が可能なのかどうかを判定の対象となる軸(同時解除対象軸)は、第3軸L3〜第6軸L6である(実際の判定ではステップCでYESとなるのは第4軸L4)。同様にして、解除軸1変数の軸が第3軸L3の場合は、同時解除対象軸は第4軸L4〜第6軸L6であり、第4軸L4では同時解除対象軸は第5軸L5および第6軸L6、第5軸L5では同時解除対象軸は第6軸L6のみとなる。
また、解除軸1変数が「6」の場合には、ステップB16で「5」から「6」にインクリメントされた時点で、ステップB17でYESの判定となるので、上記したステップを繰り返すことなく直接ステップB12に進み、第6軸L6のみをブレーキ解除してフリー状態とする。
これにより、第2軸L2のブレーキ解除の際に条件の合致する軸が存在する場合にはその軸のブレーキも同時に解除し、存在しない場合には、第2軸L2のみのブレーキ解除を行う。このようにして、全ての回転関節軸L1〜L6について順次ブレーキ解除の動作を行うと、1回のブレーキ解除サイクルが終了することになる。この時、ダイレクトティーチング作業が終了してロボット2の位置が教示位置(図4(m)の状態)に設定されていれば終了し(ステップB14)、そうでない場合には、繰り返し上記のブレーキ解除サイクルを実施する。
この場合、コントローラ3は、解除軸1変数の値が「6」になっているので(ステップB15でYES)、解除軸1変数の値を再び「1」に設定して、ステップB2に戻り、上記のステップB2〜B17を繰り返し実行する。そして、ダイレクトティーチング作業の終了がティーチングペンダント4から入力操作されると、コントローラ3は、ステップB14でYESとなって制御プログラムを終了する。
このような第2の実施形態によれば、第1の実施形態の効果に加えて、同時に2つの軸についてブレーキ解除を行えるので、ダイレクトティーチングの作業に際してアームの移動の自由度を高めることができる。また、この場合でも、解除軸1変数の値の軸と同時にブレーキ解除される軸とが「直交相当」の条件を満たしているので、一方の軸の周りの回動操作で他方の軸の周りに連動して移動するのを抑制でき、これによって互いに教示動作を阻害することなく移動させることができる。
第2の実施形態においても、ブレーキ解除サイクルの単位でダイレクトティーチングの終了判断をしているが、ブレーキ解除ステップ毎にダイレクトティーチングの終了判断をするようにしても良い。
(第3の実施形態;請求項9)
図8は本発明の第3の実施形態を示すもので、以下、第2の実施形態と異なる部分について説明する。この第3の実施形態では、解除軸1変数の値の軸に対して、他のすべての軸について「直交相当」であるか否かを判定してブレーキ解除を行うところが第2の実施形態と異なるところである。
第2の実施形態で解除軸1変数の値の軸について同時にブレーキ解除をする対象としてループカウントの値を「1」ずつインクリメントした値が「6」に達した時点で終了していたのに対して、「6」に達した後、「1」に戻り解除軸1変数の値まで判定を行うようにしている。
即ち、図8に示すように、コントローラ3は、解除軸1変数を「1」に設定し(ステップC1)、全軸L1〜L6をロック状態に制御する(ステップC2)。次に、各軸L1〜L6について、順変換を実行して各アーム6〜11の位置を演算する(ステップC3)。続いて、コントローラ3は、ループカウント値として「1」を設定し(ステップC4)、解除軸候補変数の値を解除軸1変数に「1」を加えた値つまり「2」に設定する(ステップC5)。解除軸候補変数は、同時解除対象軸を設定するための変数である。
次に、コントローラ3は、解除軸1アプローチとして解除軸1変数の軸つまり第1軸L1のアプローチを算出する(ステップC6)。続いて、解除軸候補アプローチとして解除軸候補変数の軸つまり第2軸L2のアプローチを算出する(ステップC7)。
続いて、コントローラ3は、上記ステップステップC6,C7で算出した解除軸1アプローチと解除軸候補アプローチとの両方のベクトルの角度を計算する(ステップC8)。前述同様にして、ここでは、第1軸L1と第2軸L2との交差角度θを計算する。そして、計算結果として得られたベクトル間の交差角度θが、「直交相当」であるかすなわち前述の式(1)を満たしているか否かを判断する(ステップC9)。
以下、コントローラ3は、式(1)を満たしている解除軸候補が存在するか否かを順次判定していく。まず、ループカウント値が「6」以下である場合(ステップC10でYES)には、解除軸候補変数の値が「6」に達するまで(ステップC11でNO)、解除軸候補変数の値を「1」インクリメントする(ステップC12)と共にループカウント値を「1」インクリメントして(ステップC13)、ステップC7に戻り、上記のステップC7〜C13を繰り返し実行する。
この後、「直交相当」の回転関節軸が判定されないまま(ステップC9でNO)解除軸候補変数の値が「6」に達した場合には(ステップC11でYES)、解除軸候補変数の値を「1」に設定して(ステップC14)ステップC13を経て「直交相当」の軸が存在するか否かを判定する。これにより、解除軸1変数の値よりも小さい値の軸についても「直交相当」の軸が存在するか否かの判定が行われることになる。
コントローラ3は、上記の判定の結果、「直交相当」の軸が存在する場合には(ステップC9でYES)、その「直交相当」の軸である解除軸候補変数の値の軸をブレーキ解除してフリー状態とし(ステップC15)、続いて解除軸1変数の値の軸をブレーキ解除してフリー状態とする(ステップC16)。また、判定の結果、「直交相当」の軸が存在しない場合には(ステップC10でNO)、解除軸1変数の値の軸のみをブレーキ解除してフリー状態とする(ステップC16)。
これにより、解除軸1変数の値の軸について上位の値の軸について「直交相当」の軸が存在しない場合でも、下位の値の軸について「直交相当」の軸が存在するか否かを判定するので、同時にブレーキ解除される軸が発生する確率が高くなる。
コントローラ3は、解除軸1変数の軸と「直交相当」の軸が存在した場合にはその軸とをフリーにした状態で、任意時間(例えば1msの一定時間)だけ待った(ステップC17)後、全軸をロック状態に戻す。そして、以上のようにして解除軸1変数の軸である第1軸L1について「直交相当」の軸の判定とブレーキ解除を行うブレーキ解除ステップが終了すると、ダイレクトティーチングの作業が終了したか否かを判断し(ステップC18)、NOの場合には、続いて解除軸1変数を「1」インクリメントして(ステップC20)、再びステップC2に戻り、上記したステップC2〜C17のブレーキ解除ステップを繰り返し実行する。
このようにして、解除軸1変数の値が「6」になるまでの動作を1回のブレーキ解除サイクルとして実行し、各軸L1〜L6について順次「直交相当」の軸が存在するか否かを判断して存在する場合には同時にブレーキ解除を行ってロボット2のティーチング動作を実施できるようにする。
そして、ブレーキ解除サイクルが1サイクル終了した時点でダイレクトティーチング作業が終了していない場合(ステップC18でNO)には、解除軸1変数の値が「6」になっているので(ステップC19でYES)、コントローラ3は、解除軸1変数を「1」に再設定し(ステップC21)、且つ解除軸候補変数を「0」に設定して(ステップC22)、再びステップC2に戻り、上記したブレーキ解除ステップを繰り返し実行する。この後、ダイレクトティーチング作業が終了した旨の入力がティーチングペンダント4などから入力されると、コントローラ3は、ダイレクトティーチングの制御動作を終了する(ステップC18でYES)。
このような第3の実施形態によっても、第1、第2の実施形態と同様の効果を得ることができるとともに、解除軸1変数の値の軸について上位の値の軸について直交相当の軸が存在しない場合でも、下位の値の軸について直交相当の軸が存在するか否かを判定するので、同時にブレーキ解除される軸が発生する確率が高くなり、ダイレクトティーチングにおけるアームの移動の自由度が高くなり、作業性の向上を図ることができる。
尚、上記実施形態では、ダイレクトティーチング作業の終了を、ブレーキ解除ステップ毎に判定しているが、ブレーキ解除サイクル単位で判定することもできる。
(第4の実施形態;請求項1,2,3)
図9〜図12は本発明の第4の実施形態を示すもので、以下、第1の実施形態と異なる部分について説明する。この実施形態においては、第1の実施形態と同様に、複数の軸、つまり第1軸L1〜第6軸L6について予め設定された順序でブレーキ解除ステップ(開放対象となる所定の軸はモータのブレーキを解除した状態で、他の残りの軸はモータのブレーキをかけた状態のままとするブレーキ解除状態を所定時間だけ実施するステップ)を実行する。ブレーキ解除ステップは、第1の実施形態と同様に、予め設定された順番が1回りすることを1周期(1ブレーキ解除サイクル)として繰り返し実行される。この1周期の所要時間は、固定的で一定の時間、本実施形態では、60msに定められている。
1周期内で、各軸は順にモータのブレーキが解除されるが、このブレーキ解除時間(以下、開放時間)は、第1の実施形態では、全ての軸について一律に定められた一定の時間(1ms)であったが、本実施形態では、前周期における移動量が多い軸ほど長い時間となるように移動量に比例して長くなるように構成されている。
本実施形態の場合、各軸の開放時間Tk(n)は、固定的に確保される固定開放時間Tkf(本実施形態では1ms)に、移動量に応じて変わる可変開放時間Tkv(n)を加算した時間として設定される。なお、1周期の所要時間は60ms、そのうち固定開放時間Tkfは6軸全体で6msであるから、可変開放時間Tkv(n)は全体で54msであり、この54msが各軸に分配される。
各軸の可変開放時間Tkv(n)は、初期値として予め設定された基準時間Tkv(0)(本実施形態では9ms)に、各軸の前周期(n−1)での移動量を基にして求めた変化係数Ck(n-1)を乗じて算出する。各軸の変化係数は次のようにして求める。まず、前周期における各軸の移動量Mk(n-1)と全軸の平均移動量Mave(n-1)とを算出し、各軸の移動量Mk(n-1)から平均移動量Mave(n-1)を差し引いた値を各軸の偏差移動量ΔMk(n-1)とする。次に、各軸の偏差移動量ΔMk(n-1)の値が同符号のもの(プラスのもの、或いはマイナスのもの)を加算した値の絶対値を分配分母係数Dとして算出し、各軸の偏差移動量ΔMk(n-1)を分配分母係数Dで除した値に「1」を加算してその値を変化係数Ck(n-1)として算出する。そして、前述のように、可変開放時間の基準時間Tkv(0)(9ms)に変化係数Ck(n-1)を乗じたものを次回周期(n)における各軸の可変開放時間Tkv(n)として設定する(以上、第1の可変開放時間設定処理)。
従って、各軸の可変開放時間は、前周期での移動量の偏差に正比例する部分(基準時間×偏差移動量/分配分母係数)を有し、この可変開放時間と固定開放時間の和として求められる開放時間は、前周期の各軸の移動量が多いほど長い時間に設定されることとなる。ここで、各軸の移動量は回転角度で表わし、回転した角度の累計として表わすものとする。例えば、一方向に2°回転し、逆方向に2°回転した場合、移動量は4°として表わす。
さて、作業者によりダイレクトティーチングのモードが設定されると、コントローラ3は、図9に示すダイレクトティーチングの制御プログラムを実行する。つまり、コントローラ3は、まず、第1回目のブレーキ解除サイクルを実行するために、各軸のブレーキの固定開放時間および可変開放時間を初期値として予め設定された基準時間に設定する(図9のステップD1で「NO」、ステップD2)。ここで、各軸の固定開放時間Tkfは固定的で1msに設定されているから、固定開放時間の基準時間は1msであり、可変開放時間の基準時間Tkv(0)は、前述のように9msに設定されているから、各軸に与えられる開放時間Tk(n)は10msである。なお、可変開放時間の基準時間は、1周期における全体の可変開放時間(54ms)を6つの各軸に均等に配分した値として設定されたものである。
各軸の開放時間Tk(n)を設定すると、コントローラ3は、第1回目のブレーキ解除サイクルの実行に入る。このブレーキ解除サイクルは、図10に示されているように、第1軸L1から第6軸L6まで軸番号順にブレーキ解除ステップを実施することによって行われる。このことは第1の実施形態と同様であるが、第1の実施形態との相違は、各軸のブレーキ解除ステップに入る前に当該軸の現在角度を検出して例えばROM13に記憶し(第1軸ではステップE1)、ブレーキの解除中は、回転方向、逆転した場合にはその時の回転角度をROM13に記憶し(第1軸ではステップE4)、ブレーキ解除ステップの終了後に当該軸の現在角度を検出してROM13に記憶する(第1軸ではステップE5)ところにある。そして、このブレーキ解除ステップ中の各軸の累計回転角度を算出し、この累計値を各軸の移動量としてROM13に記憶する(図9のステップD4)。
第1回目のブレーキ解除サイクルを終了すると、コントローラ3は、次回である第2回目のブレーキ解除サイクルでの各軸の開放時間Tk(2)を、前周期での各軸の移動量に応じた時間に設定する演算を行う(図9のステップD5で「NO」、ステップD1で「YES」、ステップD3)。この次回のブレーキ解除サイクルでの各軸の開放時間を求める制御プログラムは図11に示されている。
つまり、各軸の開放時間Tk(n)の算出は、まず、前周期(n−1)での全軸の平均移動量Mave(n-1)を求めることから始まる(ステップF1)。次に、コントローラ3は、前周期(n−1)での各軸の移動量Mk(n-1)から平均移動量Mave(n-1)を差し引き、その値を偏差移動量ΔMk(n-1)とする(ステップF2)。続いて、コントローラ3は、この各軸の偏差移動量ΔMk(n-1)のうち、符号が同じもの、例えば符号がプラス(+)の偏差移動量の総和を求め、これを分配分母係数Dとする(ステップF3)。なお、マイナス(−)の偏差移動量の総和を求めてその絶対値をとっても、同じ値の分配分母係数Dが得られる。その後、コントローラ3は、偏差移動量ΔMk(n-1)を分配分母係数Dで除した値に「1」を加算し、これを変化係数Ck(n-1)とする(ステップF4)。そして、コントローラ3は、各軸の変化係数Ck(n-1)に可変開放時間の基準時間Tkv(0)を乗じて各軸の可変開放時間Tkv(n)を求め(ステップF5)、最後に、各軸について固定開放時間Tkfと可変開放時間Tkv(n)とを加算し、これを各軸の開放時間として設定し(ステップF6)、以上により、次周期での各軸の開放時間の計算を終了する。
このようにして次周期での各軸の開放時間を求めると、コントローラ3は、次の周期のブレーキ解除サイクルを実行する(図9のステップD4)。このブレーキ解除サイクルの実行時においても、上述したと同様に、各軸の移動量を求め、そして、この移動量を基に、次回のブレーキ解除サイクルでの各軸の開放時間を求める。このようにして次々と前周期での各軸の移動量を基に、各軸の開放時間を求めてブレーキ解除サイクルを実行することをロボット先端が教示位置に移動するまで継続して行う。
図12はブレーキ解除サイクルの第1回目から第3回目までの各周期について、各軸の移動量と次周期の各軸の開放時間を示したものである。なお、図12では、第1軸L1〜第6軸L6をJ1〜J6で示している(図14、図15、図17も同じ)。この図12により、例えば第1軸L1と第5軸L5について、第2回目の周期における開放時間の計算例を説明すると、まず、第1回目で第1軸L1〜第6軸L6の総移動量が3°で、平均移動量Mave(1)は0.5°となるから、偏差移動量ΔMk(1)は第1軸L1が+1.5、第2軸L2が+0.5、第3軸L3〜第6軸L6がそれぞれ−0.5となり、分配分母係数Dは符号がプラスの第1軸L1と第2軸L2の偏差移動量ΔMk(1)を合計した値2となる。そして、各軸の変化係数Ck(1)は、各軸の偏差移動量ΔMk(1)を分配分母係数Dで除した値に「1」を加算したものであるから、第1軸L1の変化係数Ck(1)は[(1.5/2)+1]=1.75、第5軸L5の変化係数Ck(1)は[(−0.5/2)+1]=0.75となる。各軸の可変開放時間Tkv(2)は、可変開放時間の基準時間Tkv(0)に変化係数Ck1を乗じたものであるから、第1軸L1の可変開放時間Tkv(2)は(9ms×1.75)=15.75ms、第5軸L5の可変開放時間Tkv(2)は(9ms×0.75)=6.75msとなる。開放時間は、固定開放時間Tkfと可変開放時間Tkv(n)の和であるから、第1軸L1の開放時間は(1ms+15.75ms)=16.75ms、第5軸L5の開放時間は(1ms+6.75ms)=7.75msとなる。このようにして次の1周期における各軸のブレーキ開放時間が求められるのである。
このように本実施形態によれば、各軸のブレーキ解除時間(開放時間)が固定開放時間と前周期の移動量に応じて変わる可変開放時間とを加算した時間として設定されるので、移動量が少ない軸であっても開放時間として固定開放時間だけは確保され、この固定開放時間によって、各軸について毎周期必ず移動可能なブレーキ解除状態が確保される。
また、前周期の移動量が多い軸については、次周期でも移動が優先して行えるように、前周期での移動量が多ければ、それだけ長い可変開放時間が設定されるので、現在のティーチングの状況を反映した開放時間とすることができる。特に、本実施形態では、1周期60msの中で、可変開放時間が合計で54msに限定されているという事情下にあって、各軸の可変開放時間の設定に分配分母係数を算出して配分をするようにしている。この分配分母係数は、各軸の移動量から平均移動量を差し引いて求めた各軸の偏差移動量のうち、同符号のものを加算した値であるから、各軸の移動量実績が数%〜数十%という増加量に圧縮されて評価されることになる。このため、前周期での移動量が多い軸に一気に多くの時間が配分されてしまうことを抑制しながら、全軸に適切な時間配分を行うことができる。例えば、図12に示されているように、前周期の移動量が「0」の軸、例えば、第5軸L5は第1回目、第2回目、第3回目の移動量が「0」であるが、その軸であっても、次周期の第2回目、第3回目、第4回目では、可変開放時間は「0」ではなく、6.75ms(固定開放時間を併せて7.75ms)という時間が確保されている。
このように、前周期での移動量が多い軸に一気に多くの時間が配分されてしまうことを抑制しながら、全軸に適切な時間配分を行うことから、手先を教示位置の近くまで動作させた後、当該手先の位置を微調整するときのように、各軸を細かく動作させたい場合に、各軸のブレーキ解除時間が適切に確保されて、各軸が容易に動作するようになり、操作性に優れたものとなる。
(第5の実施例;請求項1,2,4,6)
図13および図14は本発明の第5の実施形態を示す。この実施形態において、各軸の可変開放時間を求める場合、前周期の平均移動量Mave(n-1)を求め、各軸の移動量から平均移動量を差し引いて偏差移動量ΔMave(n-1)を求めるところまでは第4の実施形態と同様である。第4の実施形態との相違は以下の通りである。
つまり、偏差移動量ΔMave(n-1)を求めた後、最小の偏差移動量ΔMave(n-1)を適宜定めた所定の基準移動量、例えば「1°」で除し、その値を増加率とする。本実施形態の場合、基準移動量が1°であるから、偏差移動量の値がそのまま増加率となる。
そして、各軸の増加率の最小値が「−1」以上のとき、各軸の増加率に「1」を加算したものを各軸の変化係数Ck(n-1)とする。また、各軸の増加率中に「−1」未満のものがあるときには、最も小さい増加率Ms(n-1)の絶対値の逆数を圧縮係数P(n-1)として算出し、各軸の増加率に圧縮係数を乗じてから「1」を加算したものを変化係数Ck(n-1)とする。以上のようにして変化係数を求めた後、可変開放時間の基準時間Tkv(0)に変化係数Ck(n-1)を乗じたものを今回周期の可変開放時間として設定する(以上、第2の可変開放時間設定処理)。
以上のように、前周期の各軸の移動量に基づいて第n番目の周期の開放時間を設定するための制御の内容を図13を参照しながら説明する。前周期(n−1)のブレーキ解除サイクルが終了すると、コントローラ3は、前周期の全軸の平均移動量Mave(n-1)を求め(ステップG1)、続いて各軸の偏差移動量ΔMk(n-1)を算出する(ステップG2)。そして、コントローラ3は、偏差移動量ΔMk(n-1)をそのまま増加率とし(ステップ3)、その増加率ΔMk(n-1)の中で最小のものを検索し(ステップG4)、最小の増加率Ms(n-1)が予め設定されたしきい値である「−1」未満であるか否かを判断する(ステップG5)。
最小の増加率が「−1」以上である場合(ステップG5で「NO」)、コントローラ3は、各軸の増加率ΔMk(n-1)に「1」を加算し、その値を各軸の変化係数Ck(n-1)とする(ステップG6)。そして、コントローラ3は、可変開放時間の基準時間Tkv(0)に各軸の変化係数Ck(n-1)を乗じて各軸の可変開放時間Tkv(n)を算出し(ステップG7)、固定開放時間Tkfに各軸の可変開放時間Tkv(n)を加算して各軸の開放時間Tk(n)とする(ステップG11)。
最小の増加率が「−1」未満である場合(ステップG5で「YES」)、コントローラ3は、最小の増加率Ms(n-1)の絶対値の逆数を圧縮係数P(n-1)とし(ステップG8)、各軸の増加率ΔMk(n-1)に圧縮係数P(n-1)を乗じ、その積に「1」を加算した値を各軸の変化係数Ck(n-1)とする(ステップG9)。そして、コントローラ3は、可変開放時間の基準時間Tkv(0)に各軸の変化係数Ck(n-1)を乗じて各軸の可変開放時間Tkv(n)を算出し(ステップG10)、固定開放時間Tkfと各軸の可変開放時間Tkv(n)を加算して各軸の開放時間Tk(n)とする(ステップG11)。
図14はブレーキ解除サイクルの第1回目から第3回目までの各周期について、増加率の最小値が「−1」以上のときの各軸の移動量と次周期の各軸の開放時間を示したものである。なお、この場合には、圧縮係数の概念を取り入れなくとも良いが、図14には、後述する図15との関係で、圧縮係数「1」として示した。
この図14により、例えば第1軸L1と第5軸L5について、第2回目の周期における開放時間の計算例を説明すると、まず、前周期である第1回目の周期で第1軸L1〜第6軸L6の移動量の合計が3°であるから、平均移動量Maveは0.5°となる。偏差移動量ΔMk(1)は、第1軸L1が+1.5、第2軸L2が+0.5、第3軸L3〜第6軸L6がそれぞれ−0.5となる。各軸の偏差移動量ΔMk(1)がそのまま各軸の増加率となるから、その増加率のうち最小のものは「−0.5」で、「−1」以上である。そこで、各軸の変化係数Ck1は、各軸の偏差移動量ΔMk(1)に「1」を加算したものなるから、第1軸L1の変化係数Ck(1)は(1.5+1)=2.5、第5軸L5の変化係数Ck(1)は(−0.5+1)=0.5となる。各軸の可変開放時間Tkv2は、可変開放時間の基準時間Tkv(0)に変化係数Ck1を乗じたものであるから、第1軸L1の可変開放時間Tkv(2)は(9ms×2.5)=22.5ms、第5軸L5の可変開放時間Tkv(2)は(9ms×0.5)=4.5msとなる。開放時間は、固定開放時間Tkfと可変開放時間Tkv(n)の和であるから、第1軸L1の開放時間は(1ms+22.5ms)=23.5ms、第5軸L5の開放時間は(1ms+4.5ms)=5.5msとなる。
また、図15はブレーキ解除サイクルの第1回目から第3回目までの各周期について、第2回目と第3回目に増加率の最小値が「−1」未満となるときの各軸の移動量と次周期の各軸の開放時間を示したものである。この図15により、例えば第1軸L1と第5軸L5について、第3回目の開放時間の計算例を説明すると、まず、前周期である第2回目で軸L1〜第6軸L6の総移動量が6.6°で、平均移動量Mave(2)は1.1°となるから、偏差移動量ΔMk(2)は第1軸L1が+2.7、第2軸L2が1.7、第3軸L3〜第6軸L6がそれぞれ−1.1となる。各軸の偏差移動量ΔMk2がそのまま各軸の増加率となるから、その増加率のうち最小のものΔMs(2)は「−1.1」で、「−1」未満である。この増加率の最小のものが「−1」未満場合には、最小の増加率の絶対値の逆数1/−1.1=0.909091が圧縮係数P2となる。そして、各軸の増加率に圧縮係数を乗じたものに「1」を加算したものが各軸の変化係数であるから、第1軸L1の変化係数Ck(2)は2.7×0.909091+1=3.454547、第5軸L5の変化係数Ck(2)は−1.1×0.909091+1=0となる。そして、可変開放時間Tkv(3)は、可変開放時間の基準時間に変化係数Ck(2)を乗じたものであるから、第1軸L1の可変開放時間Tkv(3)は(9ms×3.454547)=31.090923ms、第5軸L5の可変開放時間Tkv(3)は「0」となる。開放時間Tk(3)は、固定開放時間Tkfと可変開放時間Tkv(n)の和であるから、第1軸L1の開放時間Tk(3)は(1ms+31.090923ms)=32.090923ms、第5軸L5の開放時間Tk(3)は(1ms+0ms)=1msとなる。
このように本実施形態によれば、各軸の増加率のうち、最低の増加率が「−1」以上である場合、各軸の増加率(偏差移動量に同じ)に「1」を加算したものを変化係数とし、この変化係数に基準時間を乗じたものを可変開放時間としたので、第4実施例の場合とは異なり、各軸の可変開放時間の設定の際に、該当する軸の前周期での移動量が比較的多いものについて、長い開放時間となるように設定することができる。また、可変開放時間の設定において、基準時間に加算する時間を、該当する軸の偏差移動量にほぼ正比例して多く配分をすることができるので、移動量が多い軸の可変開放時間を早い段階で優先して配分することができ、移動量が多い場合のダイレクトティーチングの作業性を優先させることができる。このため、ダイレクトティーチングの開始当初に、手先を教示位置に向かって大きく動かしたいような場合、その動作に対応して大きく動く軸に対して可変開放時間を多く配分できるようになるので、動かしたい軸を大きく動かして楽に手先を教示位置近くまで移動させることができるようになり、操作性に優れたものとなる。
ここで、各軸の偏差移動量をそのまま増加率としたのでは、移動量が非常に少ない軸の偏差移動量が小さくなって当該軸の増加率が「−1」を下回る場合がある。すると、変化係数の符号がマイナスになり、その結果、可変開放時間の計算値がマイナスになり、固定開放時間と可変開放時間の和として求められる開放時間が、最小限確保すべき固定開放時間(1ms)よりも少ない開放時間、更に言えば開放時間が「0」となってしまうことがある。
このようなことが生じないようにするために、本実施形態では、各軸の増加率のうち、最小のものが「−1」を下回る場合、各軸の変化係数を算出する際に、その最小の偏差移動量の絶対値の逆数を圧縮係数と定め、各軸の増加率に圧縮係数を乗じてから「1」を加算するようにした。このため、移動量が非常に少ない軸が移動量の多い軸に対して相対的に偏差移動量が小さくなってその増加率が「−1」を下回る場合に、圧縮係数を設定することで、移動量の多い軸に可変開放時間が多く配分されることを防止し、以て1周期が一定時間に定められている事情下で、移動量の非常に少ない軸でも最低限の固定開放時間(1ms)だけは確保できる。これにより、移動量の非常に少ない軸であっても、移動できなくなることを抑制しながら、移動量の多い軸に適切に可変開放時間を割り当てることができる。
(第6の実施形態;請求項1,2,3,5,6)
図16〜図18は本発明の第6の実施形態を示すもので、第4の実施形態との相違は、可変開放時間の算出として、各軸のうちの特定の軸、例えば主軸(基本軸)としての第1軸L1の移動量が予め設定されたしきい値を超えるときには、第5の実施形態の第2の可変開放時間設定処理を実行するようにしたところにある。
さて、作業者によりダイレクトティーチングのモードが設定されると、コントローラ3は、図16に示すダイレクトティーチングの制御プログラムを実行する。この制御プログラムの実行に入ると、まず、コントローラ3は、可変開放時間の設定の処理のために前記第1の可変開放時間設定処理を選択する(ステップH1)。このため、第1回目のブレーキ解除サイクルは第4の実施形態の場合と同様に、各軸に与えられる開放時間を10msに設定する。
その後、コントローラ3は、第1回目のブレーキ解除サイクルの実行に入り、各軸の回転角度の累計を算出し記憶手段としてのROM13に記憶する(ステップH2)。そして、第1回目のブレーキ解除サイクルが終了すると、コントローラ3は、各軸の移動量を読み出し(ステップH3)、そのうち主軸としての第1軸L1の移動量が予め定められたしきい値、例えば3°を超えているか否かを判断する(ステップH4)。
しきい値を超えていなければ(ステップH4で「NO」)、コントローラ3は、第1の可変開放時間設定処理により可変開放時間を算出してこの可変開放時間に1msを加算して各軸の開放時間を設定し(ステップH5)、第2回目のブレーキ解除サイクルを実行する(ステップH7で「NO」、ステップH2)。
しきい値を超えていれば(ステップH4で「YES」)、コントローラ3は、前記第2の可変開放時間設定処理により可変開放時間を算出してこの可変開放時間に固定開放時間である1msを加算して各軸の開放時間を設定し(ステップH6)、第2回目のブレーキ解除サイクルを実行する(ステップH7で「NO」、ステップH2)。
以後、上述のように、前周期での第1軸L1の移動量がしきい値を超えているか否かにより、第1の可変開放時間設定処理または第2の可変開放時間設定処理を選択して可変開放時間を算出し、ブレーキ解除サイクルを実行する。
図17は第1軸L1の移動量に応じて可変開放時間を第1の可変開放時間設定処理または第2の可変開放時間設定処理により算出して各軸の開放時間を求めた具体例を示す。この図17において、第1回目、第2回目のブレーキ解除サイクルは第1の可変開放時間設定処理によるもの、第3回目、第4回目は第2の可変開放時間設定処理によるもの、第5回目は第1の可変開放時間設定処理によるものの開放時間を示す。
図18は上述のようにして算出した第1回目から第5回目までの各軸の開放時間の変化を示すグラフである。
このように本実施形態では、前周期での第1軸L1の移動量がしきい値を超えているか否かにより、第1の可変開放時間設定処理または第2の可変開放時間設定処理を選択して可変開放時間を算出する。第1軸L1は、ティーチング時、ロボット2を開始位置から教示位置に向かって動かすような場合に大きく動くが、手先を教示位置近くまで動かして微調整するような場合には小さな動きしかしない。このため、本実施形態によれば、ロボット2を大きく動かしたい場合には、その大きく動いた例えば第1軸L1について、次周期の開放時間も大きな動きにとって必要な長い時間が設定され(第2の可変開放時間設定処理)、また、手先の位置を微調整するような場合には、ロボット2を大きく動かす場合とは異なり例えば第1軸L1の動きも小さくなって全軸に適切な開放時間を配分することができ(第1の開放時間設定処理)、総じて、ダイレクトティーチング全体において各軸が容易に動作するようになり、操作性に優れたものとなる。
(他の実施形態)
なお、本発明は上記し且つ図面に示す実施例に限定されるものではなく、以下のような拡張あるいは変形が可能である。
実施形態では、6軸の回転関節軸すべてについて第1軸L1から順次ブレーキ解除の対象としているが、フランジ11に取り付けるエンドエフェクタの種類によっては、第6軸L6を常時ブレーキ解除してもフランジ11部分のアームの落下や不意の移動が無い場合があるので、第1軸L1〜第5軸L5をブレーキ解除ステップの対象として複数の軸のモータについて同時にブレーキ解除を行うこともでき、その場合に、作業性の向上を図ることができる。
実施形態では、6軸のロボットについて説明したが、6軸に限られない。
第2あるいは第3実施形態では、解除軸1変数の値の軸と他の1つの軸をブレーキ解除してブレーキ解除ステップを実行する例を示しているが、「直交相当」に該当する軸は、3次元的には3軸が対象となりうるので、これを同様の条件を設定して計算により判定し、3軸について同時にブレーキ解除をすることもできる。また、この場合には、「直交相当」に該当する3軸であるから、ひとつの軸周りの回転操作するときに他のフリーな軸を連動させて回転させるのを防止することができる。
各ブレーキ解除ステップにおけるブレーキ解除の時間を任意時間として例えば1msとした場合で示したが、これに限らず、適宜の時間を設定することができる。この場合、6軸L1〜L6までを順次ブレーキ解除するので、作業者にとっては、時間を長くすると1軸あたりの移動時間が増える一方で他の軸の自由度が低下するような感覚を受け、時間を短くすると1軸あたりの移動時間が少なくなる一方で全ての軸を速い速度で切り換えることでスムーズにダイレクトティーチングをできるような感覚を受ける。このような性質を考慮して適宜の時間を設定すれば、作業者の主観的な感覚を配慮しつつ作業性をも配慮したティーチングを行うことができる。
第2あるいは第3の実施形態では、「直交相当」の軸の判定を、式(1)つまり直交角度90°を中心として±45°の範囲を設定したが、これに限らず、「直交相当」の意味する同時にブレーキ解除しても可能な範囲と判定できる交差角度であれば許容範囲を適宜に設定することができる。尚、この場合に、許容範囲を狭くすると直交に近い範囲に限定的になるので安全性の点で向上し、許容範囲を広くすると自由度を高めてダイレクトティーチングの作業性の点で向上する。
また、「直交相当」の判定の許容角度は、第1軸L1〜第6軸L6の軸同士の組み合わせに応じてそれぞれに設定することもできる。組み合わせる軸によっては、許容範囲を広くできる場合もあり、逆に安全性を考慮して狭い方が良い場合もあるからである。
各軸L1〜L6の移動量は、各アーム6〜11の先端の移動距離(単位mm)で表わすようにしても良い。この場合、第5の実施形態において、最小の偏差移動量ΔMave(n-1)を所定の基準移動量で除して増加率を求める場合に、当該基準移動量としては、例えば100mmに定める。
第6の実施形態における特定の軸は第1軸L1に限らず、他の主軸(基本軸)である第2軸L2または第3軸L3としても良く、更に、別の軸L4〜L6のいずれかであっても良く、要は、手先の位置を大きく変える場合に、その手先の大きな動きに伴って大きく移動する軸であれば良い。
第2の実施形態の、ブレーキを解除する回転関節軸の数を支障のない条件の下で増やすこと、つまり、予め定められた順序で設定される解除対象軸よりも順序が後の軸であって当該解除対象軸の現在の姿勢を基準にしてこれと直交相当の軸が存在する場合、この軸を同時解除対象軸として、解除対象軸と同時解除対象軸のブレーキを解除することは、第4の実施形態〜第6の実施形態に適用しても良い。
第3の実施形態の、解除対象軸よりも順序が後の軸に限られず、順序が前の軸についても解除対象軸と「直交相当」であるか否かを判定してブレーキ解除を行うことは、第4の実施形態〜第6の実施形態に適用しても良い。