図1は、本発明を実施したロボット装置の全体構成を示している。図1において、ロボットアーム1は、例えば6軸(関節)の垂直多関節ロボットアームであって、その各関節は各関節についてそれぞれ設けられたサーボモータをサーボ制御することにより所望の位置姿勢に制御することができる。
  ロボットアーム1の動作は、ロボット制御装置2により制御される。ロボット制御装置2には、操作端末3が接続され、この操作端末3の手動操作を介してロボットアーム1の動作をプログラミングすることができる。ロボットアーム1の基準位置(例えばアーム先端のツール装着面など)を所望の軌跡で移動させる動作のプログラミングは、操作端末3によって軌跡上の教示点を順次指定することによって行われる。この教示点は、例えば、ロボットアーム1を現在の位置姿勢から、操作端末3の手動操作によって移動させる動作を介して指定することができる。
  ロボットアーム1は、例えば、基台201上に架装されたそれぞれ6つの回転関節を有する6自由度マニプレータとして構成される。ロボットアーム1の各関節はこれら各関節内部に配置された駆動源によってロボット制御装置2により指定された角度に制御することができ、これによってロボットアーム1を所望の位置姿勢に制御することができる。ロボットアーム1の各関節を駆動する駆動源としては、サーボモータなどが用いられる。
  ロボットアーム1の先端には、作業対象のワーク200を把持するためのツールとして、グリッパ202が設けられる。グリッパ202の先端部には、ワーク200をハンドリングするためのフィンガー(爪)が設けられる。グリッパ202の内部にはフィンガーを開閉するアクチュエータが設けられる。このアクチュエータは、モータやソレノイドなどの他、空気圧や油圧方式の任意のアクチュエータによって構成される。グリッパ202は、ワーク200を特定の作業位置に搬入、搬出したり、もしくは把持したワーク200を別のワークに組み付けたりする目的でロボットアームの先端に装着される。なお、ロボットアーム1の先端に配置されるツールは、上記のグリッパに限定されず、他の任意の機能を有するエンドエフェクタであってよい。
  図2は図1のロボットアーム1、ロボット制御装置2、および操作端末3から成るロボット装置の制御系の基本構成を示している。
  図2において、ロボット制御装置2の主制御部は、汎用マイクロプロセッサなどから成るCPU501により構成される。CPU501には当該のロボット装置全体を制御するプログラムを格納したROM502、CPU501のワークエリアとして用いられるRAM503が接続される。また、各種の制御データの入出力に用いられる記憶装置として、外部記憶装置504を設けることがある。この外部記憶装置504は、例えば固定式または着脱式のHDD、SSD、フラッシュメモリなどから構成することができる。外部記憶装置504が着脱式の記憶メディアを用いる場合、その記憶メディアは例えばロボットアーム1の教示(プログラミング)内容や、ROM502のプログラムを更新する制御データの入出力に用いることができる。
  上記各部は不図示の内部バスによって接続される。また、CPU501は任意のインターフェース規格に基づき構成されたインターフェース回路505を介して操作端末3と通信することにより、操作端末3の操作状態を入力することができる。また、CPU501はIEEE−802.3など、所定のネットワーク規格に基づき構成されたインターフェース回路506を介して基幹LAN30と通信することができる。基幹LAN30には、例えば本実施例のロボット装置と協働して動作する他のロボット装置などを接続することができる。
  また、CPU501には、操作端末3の操作ボタン103(後述)の連続(ジョグ)操作入力を処理するための時間計測手段(図4の11)としてRTC(リアルタイムクロック)507が接続されている。
  図2では、ロボットアーム1の構成部材として、ロボットアーム1の各関節に設けられた6軸分のサーボモータ7a、7b…7fを示してある(グリッパ202の系は図示を省略)。各サーボモータ7a、7b…7fを駆動制御するサーボ制御回路6は、ロボット制御装置2のドライバ508と接続されている。ドライバ508は後述の図4のサーボ制御15を実現する駆動回路から構成される。CPU501は、操作端末3の操作入力に応じてドライバ508を介してロボットアーム1の各サーボモータ7a、7b…7fを駆動制御することができる。
  図3は、図1および図2の操作端末3の操作面の構成を示している。操作端末3は、ロボット制御装置2に対してロボット装置の動作を制御する制御情報を送信し、例えばロボットアーム1は、ロボット制御装置2の制御に従って各関節を動作させる。
  図3において、操作端末3はロボット装置(図1のロボットアーム1、グリッパ202)の動作やプログラム状態に関する諸情報を表示するための表示部102を有する。この表示部102の左上には、非常停止ボタン131が配置されている。また、操作端末3の下部から、ロボット制御装置2と接続するためのケーブル132が導出されている。
  操作端末3の表示部102は、例えば液晶表示器とタッチセンサなどを用いたタッチパネルなどから構成することができる。この場合、表示部102はロボットの動作やプログラム状態に関する情報表示の他、表示上に画成されたタッチキーの操作によって、ロボットの教示操作を行う操作入力手段(の一部)を構成する。表示部102は、ロボットの現在位置あるいは現在姿勢、ロボット教示時の移動の速度あるいはステップ送り時の移動量、教示済の動作ポイントの位置あるいは姿勢などを含むロボットの動作に関する情報を表示することができる。
  例えば、表示部102のうち、表示領域1024は、設定済みの(あるいはこれから設定される)教示点におけるX、Y、Zの3次元座標値(ないし各軸軸上の移動量)と、該3次元座標軸廻りにおける回転移動の量(RX、RY、RZ)の表示に用いられる。また、表示領域1022は、特に現在設定中の教示点、または現在のロボットアーム1の状態に対応したX、Y、Zの3次元座標値(ないし各軸軸上の移動量)と、該3次元座標軸廻りにおける回転移動の量(RX、RY、RZ)の表示などに用いられる。また、表示部102の上部および下部の表示領域1021、1025は、例えばファンクションキー部で、これら表示領域1021、1025に画成される複数のファンクションキーは動作状態に応じて異なる設定入力に切り換えられる。また、中央の表示領域1023は、現在のジョグ(連続)移動速度(またはステップ操作量など)、ロボットの現在の操作対象部位の表示などに用いられる。また、図3の状態では、表示領域1023の右側には、教示点などの登録に用いられる登録キーが表示されている。
  なお、図3の表示部102の表示状態はあくまでもロボット装置の状態や操作端末3の特定の操作状態に対応した一例に過ぎない。表示部102をタッチパネルなどにより構成する場合には、当然ロボット装置の状態や操作端末3の特定の操作状態に応じて表示部102の表示の全部または一部は図3とは異なる状態に制御される場合がある。このような表示部102の表示の様式や、表示部102がタッチパネルなどにより構成される場合の操作方式に関しては当業者が任意に変更可能な設計事項である。
  図3の操作端末3では、教示点のX、Y、Zの3次元座標や、あるいは教示点への移動を行わせる時に操作対象のロボットアームの関節と方向を指示するために用いられる操作ボタン103が設けられている。この操作ボタン103は、例えば各座標軸上の正方向入力を指定するボタン103a(X+、Y+、Z+、RX+、RY+、RZ+)と、負(逆)方向入力を指定するボタン103b(X−、Y−、Z−、RX−、RY−、RZ−)から構成する。操作端末3の操作ボタン103は、X、Y、Zの3次元座標系における(ロボット基準部位の)位置、および各座標軸廻りの回転移動を制御するのに用いられるもので、本実施例では連続(ジョグ)操作が可能に構成される。
  図4は本実施例の操作入力制御の概要を示している。図4は、図1〜図3のロボット制御装置の制御系を構成する機能をブロック図として示しており、図1〜図3のハードウェアに相当する部材には同一符号を付してある。
  図4において、ロボット制御装置2の主たる制御機能は、ボタン解放時間計測11、停止前動作速度記憶部12、速度制御13、初速演算14、サーボ制御15の各機能から構成されている。これらの制御機能によって、ジョグ操作される操作端末3の操作ボタン103の押下および解放状態に応じてロボットアーム1のサーボ駆動系31を制御する。サーボ駆動系31は、図2のサーボ制御回路6、およびサーボモータ7a〜7fに相当する。一方、サーボ制御15の機能は、例えばCPU501のソフトウェアによって構成され、速度制御13によって決定された動作速度VCの情報を、ロボットアーム1のサーボ駆動系31の各軸を駆動する動作指令に分解する。
  また、速度制御13の機能は例えば図2のCPU501が実行するソフトウェアによって実現される。速度制御13の機能によって、サーボ制御15(図2のドライバ508に該当)に送られる動作速度VCが生成される。その場合、本実施例では、操作端末3の操作ボタン103の連続(ジョグ)操作による加速制御が行われるとともに、操作ボタン103の押下直後の初速Vsが初速演算14によって決定される。
  初速Vsは、初速演算14の機能によって、前回の操作ボタン103の連続(ジョグ)操作の際の停止前動作速度Vlと、今回の操作ボタン103押下までに経過したボタン解放時間Trによって決定される。停止前動作速度Vlとしては、停止前動作速度記憶部12に格納された値が用いられる。停止前動作速度記憶部12は例えば図2のRAM503上に割り当てられたメモリ領域により構成される。停止前動作速度記憶部12の記憶内容(V)は、速度制御13によって生成されサーボ制御15(508)に与えられる動作速度VCの値に応じてジョグ操作が連続している間、随時更新される。
  ボタン解放時間計測11の機能は、例えば図2のRTC507の計時情報を利用して実現される。このボタン解放時間計測11により、前回の操作ボタン103の連続(ジョグ)操作が停止してから、今回の操作ボタン103押下までに経過したボタン解放時間Trが測定される。
  速度制御13のソフトウェア(制御手順)は、例えば後述の図5および図8に示すように構成することができる。ここで、図5および図8の具体的な制御手順を説明する前に、図6および7を参照して本実施例における操作ボタン103の連続(ジョグ)操作時の速度制御の概要につき説明する。
  図6は、下部に操作端末3の操作ボタン103のジョグ操作(P1、P2…P6)を、また、上部にその操作に対応するロボットアーム1のジョグ動作(G1、G2…G6)のにおける動作速度の変化様子を横軸に時間を取って同期的に示している。
  本実施例では、最初のジョグ操作(P1)に対応するジョグ動作(G1)は、初期状態で(あるいは後述の閾値Trtを超えるボタン解放時間Tr経過後に)行われるジョグ動作である。
  最初のジョグ動作(G1)が開始された後、操作ボタン103が解放されるまでの間、ロボットアーム1の動作状態が継続される。そのときのロボットアーム1の動作速度(V)は、速度制御13(後述の図7のステップS8)により決定される。ジョグ動作(G1)の最初の区間では、動作速度(V)は、例えば、予め定められた加速度で単調に増加させる。この加速区間では、例えばロボットアーム1を構成する機構上の制限により可能な範囲の加速度よりも小さい加速度でロボットアーム1を動作させる。ジョグ動作(G1)の加速区間には定速区間が続く。この定速区間は、動作速度(V)が、例えば機構上の制限により可能な上限の最大速度Vmaxに到達することにより形成され、図示の例では、それ以降この最大速度Vmaxが維持される。
  後述の制御手順から明らかなように、ジョグ動作(G1)の前半のように(緩やかな)加速区間を含む制御は、ロボット装置の初期状態において最初に行われるロボット動作で行う。また、ジョグ動作(G1)の前半のように(緩やかな)加速区間を含む制御は、ジョグ操作が行なわれないボタン解放時間(Tr)が所定時間以上続いた場合にも実行される。ジョグ動作(G1)のように、まず(緩やかな)加速区間からロボットアーム1を動作させれば、一連の動作状態が低速から始まるため、ロボットアーム1の突然の高速動作を防ぎ、ロボットアーム1に不都合な動作を行わせてしまうのを防止できる。
  また、ジョグ動作(G1)の後半の定速区間では、ロボットアーム1は高速(例えば最大速度Vmax)で等速動作を行う。これにより、目標の位置姿勢が離れている場合でも、高速動作によって素早く、目標の位置姿勢に近付けることができる。
  例えば、ジョグ動作(G1)の操作端末3の操作ボタン103の解放が検出されると、本実施例では停止前動作速度記憶部12に停止前動作速度Vlとして最終のロボット動作速度(V)を記憶する。そして、ロボットアーム1を動作状態から停止状態へと変化させ、次のジョグ操作までのボタン解放時間Trを計測する(ボタン解放時間計測11)。後述の制御手順に示すように、このボタン解放時間Trは、停止前動作速度記憶部12に記憶した停止前動作速度Vlとともに後続のジョグ動作(G2)の初速(Vs)を制御するのに用いられる。
  図6に示すようにジョグ動作(G1)の後、操作ボタン103を押下すると、次のジョグ動作(G2)が開始される。この時、停止状態から動作状態へと変化する際のロボットアーム1の初速(Vs)は、停止前動作速度Vlと、ボタン解放時間Trに基づき決定する(初速演算14)。
  後述の制御手順に示すように、ボタン解放時間Trが後述の閾値Trtよりも短い場合、つまり、短いインターバルで続けて操作ボタン103のジョグ操作が起きた場合、ロボットアーム1の初速は停止前動作速度Vlに応じて制御する。図6のジョグ動作(G1)〜ジョグ動作(G2)の遷移はこの時の動作に相当する。ここでは、停止前動作速度Vlにボタン解放時間Trの長さに応じて定まる比率を乗じて得た速度値に初速Vsを制御する。
  図6に示した操作(動作)例は、ロボットアーム1の現在の位置姿勢と目標の位置姿勢が大きく離れていない場合のものである。すなわち、図6に示した操作(動作)は、ジョグ動作(G2)以降の操作は、それまでの高速なアーム移動によって、ロボットアーム1が目標の位置姿勢に近づいた場合に行われる。ジョグ動作(G2)以降の操作のように、高速状態から、短いインターバルでジョグ動作を繰り返し(G2、G3、G4…)行うことは、目標の位置姿勢の手前から、少しづつ目標の位置姿勢まで近づけて行くことを意味する。
  従来装置でも、このような操作はしばしば行われるが、従来では各ジョグ動作(G2、G3、G4…)の初速は例えば一定に決められている。これに対して、本実施例では、例えばロボットアーム1が既に高速状態(G1)に達している場合には、次のような初速演算を行う。すなわち、前回のジョグ動作の停止前動作速度Vlにボタン解放時間Trの長さに応じて定まる比率、特に今回の動作状態の初速Vsが停止前動作速度Vlよりも小さくなるような比率を乗じて得た速度値に初速Vsを制御する。この初速制御は、後述の図7、図8において、ボタン解放時間Trが後述の閾値Trtよりも短い場合の初速制御に相当する。
  図6では、ジョグ動作(G1)に続き、短いインターバルでジョグ動作(G2、G3、G4…)が複数回繰り返し行われている。このような状況においては、上記の初速制御の繰り返しによって、後続の各ジョグ動作(G2、G3、G4…)ではその初速(Vs)は除々に小さくなっていく。
  また、停止前動作速度Vlに乗じる前回のジョグ動作における停止前動作速度Vlよりも小さくなるような比率は、図7、図8(特にステップS53)に示すように、ボタン解放時間Trの長さに応じて決定される。ボタン解放時間Trの長さは、もちろん図6の各ジョグ動作(G1、G2、G3、G4…)のインターバルに相当する。そして、例えば、2つのジョグ動作(G2、G3)では、初速(Vs)の停止前動作速度Vlに対する減少比率は一定である。
  ここでもし破線で示したジョグ動作(G4)が実際に実行された場合、その直前の停止前動作速度Vlはジョグ動作(G2、G3)の場合とほぼ同じになる。すなわち、ジョグ動作(G4)の初速(Vs)の停止前動作速度Vlに対する減少比率はジョグ動作(G2、G3)の場合とほぼ同じに制御される。これに対して、破線で示したジョグ動作(G4)が実行されなかった場合には、ジョグ動作(G5)までのボタン解放時間Trが長くなる。このため、ジョグ動作(G5)の初速(Vs)の停止前動作速度Vlに対する減少比率はジョグ動作(G2、G3)の場合よりも大きくなる。
  また、ジョグ動作(G5)からジョグ動作(G6)までのボタン解放時間Trも、例えばジョグ動作(G2)とジョグ動作(G3)のインターバルよりも長い。この場合も、ジョグ動作(G6)の初速(Vs)の停止前動作速度Vlに対する減少比率はジョグ動作(G2、G3)の減少比率よりも大きくなる。
  以上のように、本実施例によれば、図6において、例えばロボットアーム1が既に高速状態(G1)に達した後、特に速度制御のための操作を明示的に行わなくても、ロボットアーム1の速度制御を自動的に行える。すなわち、目標の位置姿勢の手前から、少しづつ目標の位置姿勢まで近づけて行くような教示操作においては、初速減速とその後の加速を繰り返しながら、全体としては動作速度を徐々に自動的に減少させることができる。従って、目的の位置姿勢に近づくにつれてロボットアーム1の動作速度を自動的に減少させることができ、目的の位置姿勢に確実にロボットを停止させる教示操作が極めて容易になる。
  なお、本実施例は、上記のジョグ動作(G2)以降の波形に明らかなように、動作指令に対するロボットアーム1の応答性が高いこと、すなわちアームの動作状態と停止状態が切り替わる際の速度が瞬時に変化できることを前提としている。しかしながら、もちろん、ジョグ動作(G2)以降の動作速度の波形は誇張した図示であると考えてもよい。ジョグ動作(G2)以降の各動作速度の波形の初期の部分に、例えば機構上の制限によって定まる加速度を持つ加速期間が含まれる場合でも同等の制御を行える。その場合、上記の初速(Vs)として説明した速度は、(例えば機構上必要な)その加速期間の後に到達すべき初期の目標速度として取り扱うことにより上記と同等の制御を行える。
  また、振動を抑えることを目的とした加減速の制御方法として、速度変化を急峻ではなく滑らかにする速度制御など、種々の速度制御が公知である。このような特別な目的で行う速度制御を図6の各ジョグ動作(G1、G2…)に組み合わせることができるのはいうまでもない。
  ここで、図7に1つのジョグ操作に応じて実行される上記のロボットアーム1の動作状態における初速(Vs)制御を行うための特性例を示す。
  図7は、ロボットアーム1のジョグ動作において、初速(Vs)を決定する場合に停止前動作速度(Vl)に乗じる比率の特性の一例を示している。図7では、この比率を今回のジョグ動作の初速(Vs)と前回のジョグ動作の停止前動作速度(Vl)の比率として示してある。この初速/停止前動作速度比Vrは、波形Cで示すようにボタン解放時間(Tr)の長さに応じて変化するよう設定される。
  図7の縦軸は、停止前動作速度記憶部12に記憶した停止前動作速度(Vl)に対する初速(Vs)の比、この初速/停止前動作速度比Vrを示している。また、横軸は、ボタン解放時間計測(11)にて計測された今回のジョグ操作直前のボタン解放時間Trを示している。
  図7の初速/停止前動作速度比Vrの波形Cは、ボタン解放時間Trが閾値Trt以上に長いか、あるいはそれよりも短いかによって異なる特性としてある。図7の例では、閾値TrtはTrt=15(秒)に設定してある。
  図7の例では、ボタン解放時間Trが閾値Trtより短い、すなわち短かいインターバルで複数のジョグ操作が繰り返される場合は、ボタン解放時間Trが長くなるにつれて初速/停止前動作速度比Vrが小さくなる。すなわち、図7の初速/停止前動作速度比Vrは、ボタン解放時間Trが長くなるにつれて停止前動作速度(Vl)の65%〜0%(ないし0%に近い比率)の範囲で初速(Vs)が小さくなるように設定されている。
  また、ボタン解放時間Trが閾値Trt以上の場合には、初速/停止前動作速度比Vrは、ボタン解放時間Trに拘らず、初速(Vs)が停止前動作速度(Vl)の0%(ないし0%に近い比率としてもよい)に制御される。この初速/停止前動作速度比Vr=0の場合の処理例については後述する。
  次に図5および図8を参照して、本実施例におけるロボット装置のジョグ動作を制御する制御手順を詳細に説明する。図示の手順はCPU501の制御プログラムとして例えばROM502に格納しておくことができる。
  ステップS1では、初回のジョグ動作のために、RAM503の停止前動作速度記憶部12に停止前動作速度として、予め低速度Vminを設定しておく。また、ステップS2では、初回のジョグ動作のために、RTC507を用いて、ボタン解放時間計測11を開始する。
  ステップS3では、操作ボタン103が押下されるのを待つ。操作ボタン103が押下されない間はステップS3を繰り返し、操作ボタン103が押下されるとステップS4に移行する。
  操作ボタン103が押下されるとステップS4において、ボタン解放時間計測11によって、今回、操作ボタン103が押下されるまでに操作ボタン103が押下されずにいた時間、すなわち、ボタン解放時間Trを取得する。
  ステップS5では、ボタン解放時間Trと、RAM503の停止前動作速度記憶部12に記憶されている停止前動作速度Vlに基づき、後述の図8に示すような演算を行い、ロボットアーム1を動作させる際の初速Vsを決定する。ステップS5中に示した関数的な表現Fs(Vl,Tr)は、後述の図8に示す初速演算に対応する。
  ステップS6では、ステップS5で決定した初速Vsに従い、ドライバ508のサーボ制御(15)機能を介してロボットアーム1の各関節を制御する。これにより、ロボットアーム1のジョグ動作が開始される。この時の送り量(距離)は、ごく単純に表現するならば、V*ΔTと表現できる。ここで、ΔTはジョグ送りを制御するクロックの周期などに対応する微小区間の長さ、Vは微小区間においてCPU501による速度制御13で決定された速度である。
  ステップS7では、操作ボタン103が解放されたかどうかを確認する。ここで操作ボタン103が押下状態のままであればステップS8に進み、操作ボタン103が解放状態に変化していればステップS10に移行する。
  ステップS8では、CPU501の速度制御13により、ジョグ動作速度Vを更新する。これは加速または変化なしのいずれかである。操作ボタン103のジョグ操作が続いている間、図6に示したように、押下時間(T)に応じてロボットアーム1の動作速度Vを制御される。すなわち、最大速度Vmaxに到達するまでの間、押下時間に応じて動作速度Vが増加するような加速制御が行われる。この動作速度Vを決定する制御は、ステップS8中にFv(V,Vs,T)のような関数表現として示してある。
  ステップS9では、上記の微小区間(ΔT)において、決定された動作速度Vでサーボ制御15を行い、ロボットアーム1の軸送りを行う。この時の送り量の関数表現は、上記同様のV*ΔTである。これにより、ロボットアーム1は動作状態のまま維持され、その後、ステップS7に復帰する。
  一方、ステップS7で操作ボタン103の押下が終っている場合、まず、ステップS10において現在の動作速度Vを用いてRAM503の停止前動作速度記憶部12の停止前動作速度Vlを更新する。続いて、ステップS11ではロボットアーム1の軸送りを停止させる。これにより、ロボットアーム1のジョグ動作が停止し、ロボットアーム1は停止状態に移行する。
  ステップS12では、操作ボタン103の解放に応じ、新たにボタン解放時間Trの計測を開始するため、ボタン解放時間計測11をリセットし再度開始し、ステップS3に復帰する。
  上記ステップS5において、新たなジョグ操作に基づき開始されるロボットアーム1のジョグ動作における初速Vsの演算は、例えば図8に示すように構成することができる。
  図8のステップS51では、ボタン解放時間計測11の機能により計時されている今回のジョグ操作の直前のボタン解放時間Trが所定の閾値Trt(例えば数秒〜上記の15秒程度)以上であるか否かを判定する。この判定が肯定された場合にはステップS52へ、否定された場合にはステップS53に進む。
  ステップS51でボタン解放時間Trが閾値Trt以上である場合は、ステップS52において、図7で説明した初速/停止前動作速度比Vrを0(%)とする。一方、ボタン解放時間Trが閾値Trtより小さい場合には、ステップS53において初速/停止前動作速度比VrをVr=C(Tr)のような関数によって決定する。この関数表現(C)は、図7の閾値Trtよりも左側において初速/停止前動作速度比Vrを決定する波形Cのカーブに該当する。
  ステップS52またはS53の後、ステップS54では、初速VsをRAM503の停止前動作速度記憶部12から読み出した前回のジョグ操作における停止前動作速度Vlと初速/停止前動作速度比Vrに基づき決定する。ここでは、初速Vsは、停止前動作速度Vlと初速/停止前動作速度比Vrの積として、すなわち、Vs=Vl*Vrとして求める。なお、ステップS52で、初速/停止前動作速度比Vrが0(%)とされている場合には、Vl*Vr=0となるが、上述の最低速度Vminとして0を用いる場合にはこれでよい。もし、最低速度Vminの値に0以外の値を用いる場合、例えば初速Vsに対してVmin*(1−Vr)を補正として追加する、すなわち初速Vs=Vl*Vr+Vmin*(1−Vr)と計算すればよい。より簡素に、例えばステップS54において計算した初速Vs=Vl*VrがVmin未満(Vs<Vmin)となっているか否かを調べ、Vmin未満の場合には初速Vsとして予め定められているVminの値を設定するよう制御してもよい。
  なお、上記の初速の演算により、あるジョグ動作の初速Vsが最低速度Vminとなる場合(ステップS52)には、例えば図6のジョグ動作(G1)のように、緩やかな加速期間を先頭に含む速度制御を行うようにしておけばよい。
  以上のように、本実施例によれば、操作ボタン103のジョグ操作に応じてロボットアーム1をジョグ動作させる場合に、ロボットアーム1の動作状態における速度、特にその初速を自動的に制御することができる。
  すなわち、ロボットアーム1の停止前動作速度Vlを記憶する記憶部として停止前動作速度記憶部12を設け、アームを停止状態から動作状態に移行させる場合、当該の動作状態におけるアームの初速を停止前動作速度Vlに応じて制御する。その場合、ボタン解放時間Trを計測する計時装置としてRTC507を設け、停止前動作速度Vlにボタン解放時間Trの長さに応じて定まる比率を乗じて得た速度値に初速Vsを制御する。例えば、ロボットアーム1が既に高速状態(G1)に達している場合には、今回の動作状態の初速Vsが停止前動作速度Vlよりも小さくなるような比率を乗じて得た速度値に初速Vsを制御する。
  以上のような制御により、目標の位置姿勢の手前から、少しづつ目標の位置姿勢まで近づけて行くような教示操作において、初速減速とその後の加速を繰り返しながら、全体としては動作速度を徐々に自動的に減少させることができる。従って、目的の位置姿勢に近づくにつれてロボットアーム1の動作速度を自動的に減少させることができ、目的の位置姿勢に確実にロボットを停止させる教示操作が極めて容易になる。
  また、本実施例では、ボタン解放時間Trが所定の閾値Trtよりも長い場合には、上記のような速度制御をリセットするようになっている。すなわち、ボタン解放時間Trが所定の閾値Trtよりも長い場合、一連の動作開始時には速度が低速から開始されるため、ロボットアーム1の突然の高速動作を防ぎ、ロボットアーム1に不都合な動作を行わせてしまうのを防止できる。
  なお、以上では、入力状態に応じてロボットアームの動作を制御するためのON操作またはOFF操作の入力状態を生成するスイッチにより構成された操作手段として、図3に示したような押しボタン構成の操作ボタン103を例示した。しかしながら、そのような操作手段がレバーやスライドスイッチのような形態を有する場合でも上述の構成を実施できるのはいうまでもない。
  また、このような操作手段(操作ボタン103)は必ずしもロボット制御装置2に接続された操作端末3(ティーチングペンダントなど)に配置される必要はない。このようなジョグ操作可能な操作手段(操作ボタン103)は、ロボット制御装置2に直接設けられていてもよく、また、ロボットアーム1の一部、例えばその架台部などに配置されていてもよい。あるいは、基幹LAN30などのネットワークを介して遠隔位置に配置された携帯端末やコンピュータ端末などの制御装置上に設けられている場合でも、上述と同様の構成を実施できるのはいうまでもない。
  なお、以上では、図6のように例えばロボットアーム1が既に高速(ないし定速)状態に達した後に行う初速制御によって、全体としては除々にロボットアーム1を減速させていく例につき説明した。このような速度制御は、目標の位置姿勢の手前から、少しづつ目標の位置姿勢まで近づけて行くような教示操作を意図したものである。
  しかしながら、上述とほぼ同様の制御によって、減速ではなくロボットアーム1を加速させるような初速制御を行ってもよい。例えば、図6のジョグ動作(G1)では、その最初の部分に緩やかな加速区間を配置している。この区間の加速度は、例えば機構の上限よりもかなり緩い加速度としているが、このような緩やかな加速区間において、上述と同様の制御によって、短いインターバルでジョグ動作が繰り返された場合に初速が大きくなっていくよう制御することができる。すなわち、ボタン解放時間Trに応じて、今回の動作状態の初速Vsが停止前動作速度Vlよりも大きくなるような比率を乗じて初速Vsを求めるのである。
  このような初速Vsの「加速」特性を設定する初速/停止前動作速度比Vrの特性は、例えば図7の波形Cを上方に平行移動し、閾値Trtまでは165%〜100%の範囲で変化し、閾値Trt以降は0%が維持されるような波形(以下、C’という)である。そして、短いインターバルでジョグ操作が行なわれた(ボタン解放時間Trが短い)場合、ロボットアーム1が既に高速(ないし定速)状態に達していれば先述の通り、波形Cの初速/停止前動作速度比Vrを採用する。また、ロボットアーム1が加速中である場合には上記の波形C’の初速/停止前動作速度比Vrを採用する。このように、波形CまたはC’の初速/停止前動作速度比Vrのいずれを用いるかは、例えば次のように図8のステップS53で決定する。
  すなわち、図8のステップS53において、図6のジョグ動作(G1)の前半のように加速中か、それとも高速(ないし定速)状態に達しているかを判定する。そして、加速中ならVr=C’(Tr)、高速(ないし定速)状態であれば先述の通りVr=C(Tr)の初速/停止前動作速度比を設定する。ボタン解放時間Trが閾値Trt以上の場合の制御(図8のステップS52、S54)は上述と同様に実行する。これにより、ボタン解放時間Trが閾値Trtより長い場合には、上述同様、最低速度Vminからの加速を行う制御が行われる。
  このような制御によって、例えば図6のジョグ動作(G1)の最初の部分に配置した緩やかな加速区間において、短いインターバルでジョグ操作を行うことによって、より急速にロボットアーム1を加速することができる。これにより、作業者の熟練度や、作業の都合に応じて、必要ならばデフォルトの初期加速度よりも急速な加速度によってロボットアーム1を加速することができる。
  本発明は、操作手段の操作に応じて制御装置がロボットアームの動作を制御する種々のロボット装置において実施することができる。上述の実施例では、操作手段として操作端末3に設けられた操作ボタン103を例示したが、このような操作手段は、ロボット制御装置2や基台201に直接設けられていてもよく、また他の情報端末に設けられていてもよい。本発明の制御は、例えばロボット制御装置2のCPUのような演算手段によって実行される。従って上述した機能を実現するソフトウェアのプログラムを記録した記録媒体を画像検査装置に供給し、上記演算手段が記録媒体に格納されたプログラムを読み出し実行することによって達成されるよう構成することができる。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体はもちろん、そのプログラムを記録した記録媒体は本発明を構成することになる。
  また、上記実施例では、コンピュータ読み取り可能な記録媒体がROM502や外部記憶装置504などの記憶デバイスであるものとして説明したが、本発明は上記実施例で例示した形態だけに限定されるものではない。例えば、本発明を実施するためのプログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、着脱式のHDDやSSD、光学ディスク、各種フラッシュメモリデバイスなど、任意の外部記憶デバイスを用いることができるのはいうまでもない。このような各種記憶デバイスは、本発明を構成するプログラムが格納されていれば、本発明のコンピュータ読み取り可能な記録媒体を構成することになる。