(57)【特許請求の範囲】
【請求項１】
複数のロボット毎に、各ロボットの動作を、予め定める最小割込み周期で発生されるタイミング信号に同期して、個別に制御する複数の制御装置と、
各制御装置を、相互に通信可能に接続してネットワークを構成する通信接続手段と、
各制御装置毎に設けられ、各ロボットの動作指令を入力する入力手段と、
各制御装置に設けられ、各ロボットの動作指令に応答して各ロボットを動作させるプログラムが記憶される記憶手段と、
各制御装置毎に設けられ、前記最小割込み周期でタイミング信号を発生するタイミング信号発生手段と含み、
各制御装置は、単独機能実行モード、マスタ機能実行モードおよびスレーブ機能実行モードのうちの少なくとも１つを、前記記憶手段に格納されたプログラムによって選択的に実行可能とされ、
各制御装置のうちの１つが前記プログラムの実行によってマスタ機能実行モードに設定されたとき、各制御装置のうちの前記マスタ機能実行モードに設定された制御装置を除く残余の制御装置のうち少なくとも１つが前記プログラムの実行によってスレーブ動作を実行するスレーブ機能実行モードに設定され、
前記スレーブ機能実行モードに設定された制御装置は、マスタ機能実行モードの制御装置が動作指令を送信した時刻ｔａからスレーブ機能実行モードの制御装置が前記動作指令を受信して自己のロボットの制御を開始する時刻ｔｂまでの通信遅れ時間（ｔｂ−ｔａ）が、予め定める時間Ｔになるように、前記スレーブ機能実行モードに設定された制御装置の最小割込み周期Ｔｓ（ｂ）を変化させ、
マスタ機能実行モードに設定された制御装置によって制御されるマスタロボットと、スレーブ機能実行モードに設定された制御装置によって制御されるスレーブロボットとは、協調動作することを特徴とするロボットの協調制御システム。
【請求項２】
前記予め定める時間Ｔは、各制御装置の制御周期Ｗ以下に選ばれることを特徴とする請求項１記載のロボットの協調制御システム。
【請求項３】
前記マスタ機能実行モードに設定された制御装置は、自己の対象とするロボットへの指令を、スレ−ブ機能実行モードの制御装置に対する前記通信遅れ時間（ｔｂ−ｔａ）だけ遅延させて送信することを特徴とする請求項２記載のロボットの協調制御システム。
【請求項４】
前記協調動作において、スレーブ機能実行モードに設定された制御装置が入力手段から動作指令を入力したとき、その動作指令は、前記通信接続手段を介してマスタ機能実行モードに設定された制御装置に入力され、このマスタ機能実行モードに設定された制御装置は、前記入力した動作指令に応答して制御動作を実行することを特徴とする請求項１〜３のいずれか１つに記載のロボットの協調制御システム。
【請求項５】
各制御装置毎に入出力装置が設けられ、協調動作中は各制御装置のうちでマスタ機能実行モードに設定された制御装置と、スレーブ機能実行モードに設定された制御装置とは、前記通信接続手段を介して、マスタ機能実行モードに設定された制御装置が、スレーブ機能実行モードに設定された制御装置の入出力装置を使用して信号を入出力することを特徴とする請求項１〜４のいずれか１つに記載のロボットの協調制御システム。
【請求項６】
各制御装置は、協調動作中に各制御装置の協調動作を停止するための緊急停止手段をそれぞれ有し、各緊急停止手段のうちのいずれか１つから発生した緊急停止信号は、この緊急停止信号を発生した緊急停止手段が設けられる制御手段に入力されるとともに、残余の制御手段に前記通信接続手段を介して入力され、全てのロボットの動作を停止させることを特徴とする請求項１〜５のいずれか１つに記載のロボットの協調制御システム。
【請求項７】
各制御装置には、各ロボット毎に座標系が設定され、各ロボットのアームの先端部に寸法が既知である位置決め用ツールを着脱可能に設け、相互に隣接する各ロボットの位置決め用ツールの先端部を、少なくとも３点で突き合わせて同一位置に配置することによって、各ロボット用の座標変換行列を求め、この座標変換行列を用いて前記協調動作を実行することを特徴とする請求項１〜６のいずれか１つに記載のロボットの協調制御システム。
【請求項８】
前記協調動作において、スレーブ機能実行モードに設定されているロボットの前記マスタ機能実行モードに設定されているロボットに対する相対位置は、教示された動作開始点での相対位置関係と、教示された動作終了点での相対位置関係と満たすように補間することを特徴とする請求項７記載のロボットの協調制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のロボット毎に設けられるロボットコントローラとも呼ばれる制御装置を、通信ネットワークによって接続し、各ロボットを協調動作させるロボットの協調制御システムに関する。
【０００２】
【従来の技術】
従来から、ワークが重量物または大型物である場合、複数台のロボットによって、前記ワークを確実に把持した状態を維持しながら、予め設定された出発点から到達点にわたる複数の教示点および各教示点間の補間点を経て、正確にかつ安定して搬送する協調動作を実現するために、各ロボットを協調制御する協調制御システムが採用されている。
【０００３】
このような複数台のロボットを用いる協調制御システムにおいては、作業空間内におけるロボットの配置位置に応じた複数箇所で前記ワークを把持することができるため、前記ワークが大型物であっても、安定した搬送が可能である。また、前記ワークが重量物であっても、複数のロボットにワークの重量が分散されるので、各ロボットの重量負荷および慣性負荷が少なく、搬送速度を大きくして搬送時間を短縮することができる。
【０００４】
前記協調制御システムには、複数のロボットを１台の制御装置によって統括的に制御する「多：１」のシステムと、各ロボット毎に対応する制御装置が個別に設けられる「１：１」のシステムとがある。複数のロボットを１台の制御装置で統括的に制御する「多：１」のシステムでは、１台の制御装置によって複数台のロボットを制御しなければならないために、制御装置が特殊な構成となる。
【０００５】
これに対して、複数のロボット毎に制御装置を設けて各ロボットを個別に制御する「１：１」のシステムでは、１台のロボットを１台の制御装置によって制御するため、上記「多：１」のシステムのように特殊な構成を有する制御装置を用いる必要がなく、汎用の制御装置を用いることができる。したがって「多：１」のシステムに比べて、協調制御用プログラムを導入して、容易に協調制御システムを実現することができ、実現容易性の点で優れている。
【０００６】
しかも、前記汎用の制御装置は、協調制御システムを構築せずに、単独で他の用途に用いることが可能であり、制御装置の購入コストを節約することができ、経済的であるという利点を有している。さらにまた、ロボット台数を自在に変更することができるため、システムの設計に際して自在に対応することができ、システム設計に対する自由度が高いという利点を有している。
【０００７】
さらに他の従来の技術では、上記の複数のロボットに対して個別に制御装置を設ける「１：１」の個別協調制御システムにおいて、各ロボットについてプログラムを作成し、インタロックを用いて搬送動作を制御する個別制御システムと、複数のロボットのうちの１台をマスタロボットに設定し、マスタロボットを除く他のロボットは、前記マスタロボットに同期して追従するスレーブロボットに設定し、マスタロボットに対して実装されるソフトウェアプログラムによって、マスタロボットおよびスレーブロボットを協調制御して、ワークを搬送するマスタ／スレーブ協調制御システムとが周知である。
【０００８】
上記のマスタ／スレーブ協調制御システムでは、ワークの変更および搬送条件の変更などによってロボットの動作を変更する必要が生じた場合、前記マスタロボットに実装されるプログラムだけを変更すればよいので、プログラムの変更、作成および管理が容易であるという利点を有している。そのため、汎用ロボットコントローラによって実現される複数の制御装置のうちから１台のマスタ制御装置を選択して、残余の１または複数のスレーブ制御装置を協調動作させている。
【０００９】
このようなマスタ・スレーブ間で協調制御を行うシステムにおいては、バス結合または通信回線によって接続された各制御装置間でデータの送受信を行う場合、個々に独立して各ロボット毎に制御系を構成する各制御装置は、相互に同期させる必要がある。この同期をとるための手法としては、各制御装置間がバス結合され、かつ共有メモリ方式によって各制御装置間でデータの送受信を行う場合、共有メモリ上にフラグを設ける手法と、割込みを利用し、割り込み処理内でイベントを発生させる手法とがある。
【００１０】
図１１は、従来の技術のマスタ／スレーブ協調制御システムにおけるマスタロボットおよびスレーブロボットの各制御装置Ａ，Ｂを同期させるためのソフトウェアプログラム上の構成の一部を示すブロック図である。この従来の技術は、共有メモリ方式によって各制御装置Ａ，Ｂ間を同期させるために、マスタロボットを制御するマスタ側制御装置Ａと、スレーブロボットを制御するスレーブ側制御装置Ｂとについて見ると、マスタ側制御装置Ａの演算処理装置２は、スレーブ側制御装置Ｂの共有メモリ３のフラグ４に指令値を書き込み、スレーブ側制御装置Ｂの演算処理装置５は、共有メモリ３上のフラグ４に前記指令値が書き込まれるまで待機し、スレーブ側制御装置Ｂの演算処理装置５の演算処理動作が終了した後、フラグ４を監視するために、ポーリング動作に入り、非同期時に発生するイベントを処理することができるように構成されている。
【００１１】
図１２は、他の従来の技術のマスタ／スレーブ協調制御システムに用いられる割込み方式によって各制御装置Ａ，Ｂを同期させる手法を説明するためのブロック図である。各制御装置Ａ，Ｂ間において、一方の制御装置Ａの演算処理装置１１からの割込み指令を、通信回線１０を介して他方の制御装置Ｂが入力すると、他方の制御装置Ｂは、割込み処理手段１２が起動し、この割込み処理手段１２内でイベントを発生させて、演算処理手段１３を起動させる。この他方の制御装置Ｂの演算処理手段１３は、前記イベント処理を終了すると、再びイベント待ち状態になる。
【００１２】
さらに他の従来の技術は、特開平７−２０９１５号公報に示されている。この従来の技術では、協調動作の制御対象とされるアームを有する２台のロボットと、各ロボットを個別に制御する制御装置とを備え、各ロボットのうちで一方のロボットをマスタロボットとし、他方のロボットをスレーブロボットとして、協調制御するロボットの協調制御システムが開示されている。
【００１３】
各制御装置は、教示点データに基づいて補間計算を行い、マスタロボットのアームの移動すべき通過点を決定し、スレーブロボットのアームの次通過点は、前記マスタロボットのアームが次に移動すべき点と、運搬中のワークの状態などに対応する両アームの相対的な位置および姿勢関係とに基づいて、各制御装置のうちのいずれか一方の制御装置内で決定される。マスタ側制御装置は、与えられた教示内容に応じてアームの次通過点を決定し、そのデータをスレーブ側制御装置に送信し、スレーブロボットのアームの次通過点が決定される。これらの制御装置は、上記のように相互のデータを送受信するために通信回線によって接続される。また各制御装置は同期をとるために、各制御装置のＣＰＵ（中央演算処理装置）が内蔵しているクロック発振回路からのクロック信号を用い、協調動作するために必要なデータおよびプログラムは、すべてのマスタロボットおよびスレーブロボットに共通の制御装置のメモリに格納されている。
【００１４】
【発明が解決しようとする課題】
上記の図１１および図１２に示される各従来の技術では、他方の制御装置Ｂにとっては、フラグに対するポーリングおよびイベント待ちなどの無駄な待ち時間が発生してしまうという問題を有する。また上記の特開平７−２０９１５号公報に示される従来の技術では、マスタアームとスレーブアームとを協調動作させるために、各制御装置を同期させるにあたって、各制御装置の同期信号間の微小な差、送信周期と受信周期との微小な差の蓄積による制御周期のずれ、および通信回線による不可避的な通信遅れなどを解消する具体的対策が採られていないため、複数の制御装置を常に同期させた状態に維持することができないという問題がある。さらに、ロボット毎に設けられる各制御手段にそれぞれ備えられる入力手段から動作指令を入力する手法、ロボット毎の入出力手段間の信号の送受信処理の手法、および各ロボットの相対位置の設定に誤差が生じたときの対処の仕方については、何ら考慮されていないため、実際上、協調制御システムを構築することは不可能である。
【００１５】
本発明の目的は、複数の制御装置間の同期ずれを解消し、各ロボットの協調動作のずれを防止することができるようにしたロボットの協調制御システムを提供することである。
【００１６】
【課題を解決するための手段】
請求項１記載の本発明は、複数のロボット毎に、各ロボットの動作を、予め定める最小割込み周期で発生されるタイミング信号に同期して、個別に制御する複数の制御装置と、
各制御装置を、相互に通信可能に接続してネットワークを構成する通信接続手段と、
各制御装置毎に設けられ、各ロボットの動作指令を入力する入力手段と、
各制御装置に設けられ、各ロボットの動作指令に応答して各ロボットを動作させるプログラムが記憶される記憶手段と、
各制御装置毎に設けられ、前記最小割込み周期でタイミング信号を発生するタイミング信号発生手段と含み、
各制御装置は、単独機能実行モード、マスタ機能実行モードおよびスレーブ機能実行モードのうちの少なくとも１つを、前記記憶手段に格納されたプログラムによって選択的に実行可能とされ、
各制御装置のうちの１つが前記プログラムの実行によってマスタ機能実行モードに設定されたとき、各制御装置のうちの前記マスタ機能実行モードに設定された制御装置を除く残余の制御装置のうち少なくとも１つが前記プログラムの実行によってスレーブ動作を実行するスレーブ機能実行モードに設定され、
前記スレーブ機能実行モードに設定された制御装置は、マスタ機能実行モードの制御装置が動作指令を送信した時刻ｔａからスレーブ機能実行モードの制御装置が前記動作指令を受信して自己のロボットの制御を開始する時刻ｔｂまでの通信遅れ時間（ｔｂ−ｔａ）が、予め定める時間Ｔになるように、前記スレーブ機能実行モードに設定された制御装置の最小割込み周期Ｔｓ（ｂ）を変化させ、
マスタ機能実行モードに設定された制御装置によって制御されるマスタロボットと、スレーブ機能実行モードに設定された制御装置によって制御されるスレーブロボットとは、協調動作することを特徴とするロボットの協調制御システムである。
【００１７】
本発明に従えば、複数のロボット毎に制御装置が設けられ、各制御装置は、各ロボットの動作を、タイミング信号発生手段から予め定める最小割込み周期で発生されるタイミング信号に同期して、個別に制御する。各制御装置は、通信接続手段によって相互に通信可能に接続され、各制御装置間に通信ネットワークが構築される。各制御装置は、入力手段をそれぞれ備え、各ロボットの単独動作および協調動作を行う際に必要な教示データなどを入力することができる。また記憶手段には、各ロボット毎に予め定める動作指令に応答して各ロボットを動作させるプログラムが格納され、このプログラムの実行によって、各制御装置は、単独機能実行モード、マスタ機能実行モードおよびスレーブ機能実行モードのいずれかに選択的に設定され、１つの制御装置がマスタ機能実行モードに設定されると、残余の制御装置の全部または一部がスレーブ機能実行モードに設定される。
【００１８】
このように各制御装置は、プログラムによって単独機能実行モード、マスタ機能実行モードおよびスレーブ機能実行モードのいずれか１つを選択的に設定可能とされるので、各制御装置のうちでマスタ動作させるべきロボットの制御装置、スレーブ動作させるべきロボットの制御装置、および単独動作させるべきロボットの制御装置をプログラム上に命令として記載しておくことによって、その選択された制御装置は、マスタ動作を実行するマスタ実行モードに設定される。また残余の制御装置のうちでスレーブ動作させるべき制御装置の一部または全部を選択、具体的にはプログラム上の命令として設定しておくことによって、その選択された制御装置は、スレーブ動作を実行するスレーブ実行モードに設定される。
【００１９】
このようにして各ロボットが実行する一連の作業のうちで、協調動作する行程については、各ロボットをマスタロボットとスレーブロボットとに設定して、前記通信接続手段を介して相互に通信し、高精度で同期させて協調動作させることができる。
【００２１】
また、スレーブ機能実行モードの制御装置は、マスタ機能実行モードの制御装置が動作指令を送信した時刻ｔａから、スレーブ機能実行モードの制御装置が前記動作指令を受信して自己のロボットの制御を開始する時刻ｔｂまでの通信遅れ時間（ｔｂ−ｔａ）が予め定める時間Ｔとなるように、最小割込み周期を変化させるので、スレーブ側制御装置が自己のロボットに対する制御を開始する時刻ｔｂが、前記マスタ側制御装置がマスタ側制御装置に対して動作指令を送信した時刻ｔａに対して、前記予め定める時間Ｔよりも長くなる方向および予め定める時間Ｔよりも短くなる方向に大きくずれることが防がれる。これによってスレーブロボットのマスタロボットに対する動作上の時間的ずれを制限して、各ロボットを正確に協調動作させることが可能となる。
【００２２】
請求項２記載の本発明は、請求項１記載のロボットの協調制御システムにおいて、前記予め定める時間Ｔは、各制御装置の制御周期Ｗ以下に選ばれることを特徴とする。
【００２３】
本発明に従えば、前記予め定める時間Ｔが各制御装置の制御周期Ｗ以下に選ばれるので、マスタ側制御装置から動作指令が送信される時刻ｔａから、スレーブ側制御装置によって受信されて、このスレーブ側制御装置が自己のロボットの制御を開始する時刻ｔｂまでの時間（ｔｂ−ｔａ）が、制御周期Ｗを超えてしまうことが防がれる。これによってスレーブ側制御装置は、スレーブ側制御装置の１制御周期Ｗの時間内に、マスタ側制御装置から複数の動作指令を受信してしまうという不具合が発生を確実に防止し、マスタロボットとスレーブロボットとを高精度で協調動作させることが可能となる。
【００２４】
請求項３記載の本発明は、請求項２記載のロボットの協調制御システムにおいて、前記マスタ機能実行モードに設定された制御装置は、自己の対象とするロボットへの指令を、スレ−ブ機能実行モードの制御装置に対する前記通信遅れ時間（ｔｂ−ｔａ）だけ遅延させて送信することを特徴とする。
【００２５】
本発明に従えば、マスタ機能実行モードの制御装置が指令を送信して、これをスレーブ機能実行モードの制御装置が受信するまでには、通信による遅れ時間（ｔｂ−ｔａ）が存在し、マスタロボットとスレーブロボットとの間には動作上のずれが発生する。これを防止するために、マスタ機能実行モードの制御装置が制御するロボットに対する指令を、スレ−ブ機能実行モ−ドの制御装置の通信遅れ時間（ｔｂ−ｔａ）だけ遅延させて送信することによって、システム全体の設定を変更せずにマスタロボットに対するスレーブロボットの動作の遅れを防止し、各ロボットを高精度で同期させて、協調動作させることができる。
【００２６】
請求項４記載の本発明は、請求項１〜３のいずれか１つに記載の協調制御システムにおいて、前記協調動作は、スレーブ機能実行モードに設定された制御装置が入力手段から動作指令を入力したとき、その動作指令は、前記通信接続手段を介してマスタ機能実行モードに設定された制御装置に入力され、このマスタ機能実行モードに設定された制御装置は、前記入力した動作指令に応答して制御動作を実行することを特徴とする。
【００２７】
本発明に従えば、スレーブ機能実行モードの制御装置は、入力手段から動作指令を入力すると、この動作指令は、通信接続手段を介してマスタ機能実行モードの制御装置に入力される。このマスタ機能実行モードの制御装置は、入力した動作指令に応答して制御動作を実行し、こうしてスレーブ側制御装置からの動作指令の入力によって、マスタロボットを制御することができる。したがってオペレータは、マスタ側制御装置からだけではなく、スレーブ側制御装置側からも動作指令を入力して、場所的にスレーブロボットから離れた位置に設置されているマスタロボットの動作を設定することができ、したがって協調制御システム全体を操作者の希望する場所から操作することが可能となり、操作上の利便性が向上される。
【００２８】
請求項５記載の本発明は、請求項１〜４のいずれか１つに記載のロボットの協調制御システムにおいて、協調動作中は各制御装置毎に入出力装置が設けられ、各制御装置のうちでマスタ機能実行モードに設定された制御装置と、スレーブ機能実行モードに設定された制御装置とは、前記通信接続手段を介して、マスタ機能実行モードに設定された制御装置が、スレーブ機能実行モードに設定された制御装置の入出力装置を使用して信号を入出力することを特徴とする。
【００２９】
本発明に従えば、スレーブ機能実行モードの制御装置によって制御されるロボットに接続されたエンドエフェクタなどの外部機器は、スレーブ機能実行モードに設定された制御手段の入出力装置（略称ＩＯ）を用いて行なわれる。協調動作においては、マスタロボット側の記憶手段に記憶されたプログラムの動作命令にしたがって動作するため、スレーブロボットに接続された外部機器の制御は、マスタロボットの制御装置に設けられる入出力装置を用いて行なわれ、そのために信号の配線が煩雑になり、スレーブロボットを単独で使用しようとした場合に、マスタロボットの信号の影響を受けてしまう。このような不具合は、上記のようにマスタロボットがスレーブ側制御装置の入出力装置を用いることによって、回避することができる。
【００３０】
請求項６記載の本発明は、請求項１〜５のいずれか１つに記載のロボットの協調制御システムにおいて、各制御装置は、協調動作中に各制御装置の協調動作を停止するための緊急停止手段をそれぞれ有し、各緊急停止手段のうちのいずれか１つから発生した緊急停止信号は、この緊急停止信号を発生した緊急停止手段が設けられる制御手段に入力されるとともに、残余の制御手段に前記通信接続手段を介して入力され、全てのロボットの動作を停止させることを特徴とする。
【００３１】
本発明に従えば、各制御装置には緊急停止手段が備えられるので、どの位置のロボットからでも、異常が発生したときに、前記緊急停止手段を用いて各ロボットの一部または全体を緊急停止させることができ、これによって安全性が向上される。
【００３２】
請求項７記載の本発明は、請求項１〜６のいずれか１つに記載のロボットの協調制御システムにおいて、各制御装置には、各ロボット毎に座標系が設定され、各ロボットのアームの先端部に寸法が既知である位置決め用ツールを着脱可能に設け、相互に隣接する各ロボットの位置決め用ツールの先端部を、少なくとも３点で突き合わせて同一位置に配置することによって、各ロボット用の座標変換行列を求め、この座標変換行列を用いて前記協調動作を実行することを特徴とする。
【００３３】
本発明に従えば、マスタ座標系に設定された共通な３点を結ぶ仮想フレームを基準にして協調動作するので、各制御装置は、各ロボットの位置および姿勢、さらには位置および姿勢のずれを、常に共通な座標系上で各ロボットが相対的位置を正確に認識可能とし、各ロボットのうちで、いずれのロボットをマスタとして設定しかつスレーブとして設定しても、１つの座標系内で協調動作を高精度で制御することができる。
【００３４】
請求項８記載の本発明は、請求項７記載のロボットの協調制御システムにおいて、前記協調動作において、スレーブ機能実行モードに設定されているロボットの前記マスタ機能実行モードに設定されているロボットに対する相対位置は、教示された動作開始点での相対位置関係と、教示された動作終了点での相対位置関係と満たすように補間することを特徴とする。
【００３５】
本発明に従えば、マスタおよびスレーブの各ロボット間の相対位置関係において、マスタロボットとスレーブロボットとが実際の相対位置関係と設定された相対位置変換行列との間にずれがある場合、ツールの寸法に誤差がある場合、ロボットリンク長のばらつきがある場合、ゼロイング精度とも呼ばれるロボットの基準位置への設置精度自体にばらつきがある場合、ならびに負荷によるロボットアームのたわみの影響によって、相対的な位置および姿勢関係を一定に保つように制御しても、実際の位置および姿勢関係が一定に保たれない場合などの相対位置がずれる原因が存在しても、上記のようにマスタ機能実行モードに設定されたロボットの教示位置の他に、スレーブ機能実行モードに設定されるロボットの位置をも教示することによって、相対位置および姿勢を変更しながらスレーブロボットをマスタロボットに追従させて協調動作させることが可能となる。これによってマスタおよびスレーブの各ロボットの相対位置および姿勢のずれが時間経過とともに拡大することが防がれ、相対位置および姿勢関係を高精度に維持しながら、所定の動作を継続的に実行することができる。
【００３６】
【発明の実施の形態】
図１は、本発明の実施の一形態のロボットの協調制御システム２０の全体の構成を示す系統図である。本実施の形態のロボットの協調制御システム（以下、単に協調制御システムと略記する場合がある）２０は、複数（本実施の形態では２）のロボットＲａ，Ｒｂと、各ロボットＲａ，Ｒｂを相互に個別に独立して制御する２台の制御装置Ｃａ，Ｃｂと、各制御装置Ｃａ，Ｃｂを相互に通信可能に接続する通信接続手段２１とを含む。
【００３７】
各ロボットＲａ，Ｒｂは、一例として述べると、工場内の所定の作業ステージの略水平な床２２上に相互に間隔をあけて設置される基台２３上に、旋回体２４が設けられ、旋回体２４には複数のアーム２５，２６，２７が各軸まわりに角変位可能に設けられ、最も遊端側のアームの先端部には手首２８が設けられ、この手首２８にはワーク２９を着脱可能に把持するハンド３０が設けられる６軸の多関節ロボットによってそれぞれ実現される。
【００３８】
各制御装置Ｃａ，Ｃｂは、ロボットコントローラとも呼ばれ、相互に前記通信接続手段２１によって接続されて、通信ネットワークを構成する。これらの制御装置Ｃａ，Ｃｂは、各ロボットＲａ，Ｒｂにライン３１ａ，３１ｂによってそれぞれ接続される制御装置本体３３ａ，３３ｂと、ティーチペンダントとも呼ばれ、各制御装置本体３３ａ，３３ｂにライン３５ａ，３５ｂによって接続される教示入力手段３７ａ，３７ｂと有する。
【００３９】
前記通信接続手段２１は、イーサネット（Ｅｔｈｅｒｎｅｔ）によって実現される。本実施の形態において「イーサネット」とは、米国電気電子学会（略称ＩＥＥＥ；Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ）および国際標準化機構（略称ＩＯＳ；Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  Ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）によって、ＩＥＥＥ８０２．３およびＩＳＯ８８０２−３として標準化されたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）をいう。
【００４０】
図２は、各制御装置Ｃａ，Ｃｂの構成を示すブロック図である。上記の各制御装置Ｃａ，Ｃｂには、各ロボットＲａ，Ｒｂにそれぞれ備えられる図示しないサーボモータを駆動するためのサーボ駆動手段４１ａ，４１ｂ、パワーシーケンス回路４２ａ，４２ｂ、各ロボットＲａ，Ｒｂに動作指令を入力するための操作パネル４３ａ，４３ｂ、中央演算処理装置（略称ＣＰＵ）によって実現される制御手段４４ａ，４４ｂ、メモリ４５ａ，４５ｂ、前記教示入力手段３７ａ，３７ｂ、教示入力手段用インターフェイス回路４６ａ，４６ｂ、パーソナルコンピュータ用インターフェイス回路（以下、ＰＣ用インターフェイス回路と略記する）４７ａ，４７ｂ、信号入出力回路４８ａ，４８ｂ、および通信制御手段４９ａ，４９ｂを含む。前記遠隔制御装置用インターフェイス回路４７ａ，４７ｂには、パーソナルコンピュータ（以下、ＰＣと略記する場合がある）５３ａ，５３ｂが接続される。
【００４１】
前記パワーシーケンス回路４２ａ，４２ｂ、メモリ４５ａ，４５ｂ、教示入力手段用インターフェイス回路４６ａ，４６ｂ、ＰＣ用インターフェイス回路４７ａ，４７ｂ、信号入出力回路４８ａ，４８ｂ、および通信制御手段４９ａ，４９ｂは、バスライン５０ａ，５０ｂによって相互に接続される。各操作パネル４３ａ，４３ｂには、各ロボットＲａ，Ｒｂの動作を停止するための停止指令を入力するための停止スイッチＳＷ１，ＳＷ２と、緊急停止スイッチＳＷ５，ＳＷ６とが設けられる。また、信号入出力回路４８ａ，４８ｂには、ハンド開閉検出スイッチＳＷ３，ＳＷ４が接続される。
【００４２】
前記通信接続手段２１は、ハブ（ＨＵＢ）５１、各制御装置Ｃａ，Ｃｂに設けられる通信制御手段４９ａ，４９ｂ、および通信ケーブル５２ａ，５２ｂを含む。各通信ケーブル５２ａ，５２ｂは、各通信制御手段４９ａ，４９ｂとハブ５１とをそれぞれ接続し、通信ネットワークを構成する。
【００４３】
図３は、各制御装置Ｃａ，Ｃｂのソフトウェア上の構成を示すブロック図である。各制御装置Ｃａ，Ｃｂは、各メモリ４５ａ，４５ｂにそれぞれ格納されるプログラムを実行するために、プログラム格納部６１ａ，６１ｂ、プログラム実行解釈部６２ａ，６２ｂ、スレーブ指令値生成部６３ａ，６３ｂ、動作指令値生成部６４ａ，６４ｂ、指令値送信部６５ａ，６５ｂ、指令値遅延部６６ａ，６６ｂ，指令値受信部６７ａ，６７ｂ、割込み処理部６８ａ，６８ｂ、クロック発生部６９ａ，６９ｂ、および信号経路切換え部７１ａ，７１ｂを含む。
【００４４】
各制御装置Ｃａ，Ｃｂは、前記メモリ４５ａ，４５ｂに格納されるプログラムによって、単独機能実行モード、マスタ機能実行モード、およびスレーブ機能実行モードのいずれかにそれぞれ設定され、各制御装置Ｃａ，Ｃｂのいずれか一方がマスタ機能実行モードに設定されると、各制御装置Ｃａ，Ｃｂのいずれか他方はスレーブ機能実行モードに設定され、各制御装置Ｃａ，Ｃｂによって制御される各ロボットＲａ，Ｒｂを協調動作させることができるように構成される。
【００４５】
図４は、各制御装置Ｃａ，Ｃｂの同期処理機能を説明するための図である。各制御装置Ｃａ，Ｃｂは、同様な同期処理機能を有し、便宜上、マスタ機能実行モードに設定された一方の制御装置Ｃａを送信側とし、スレ−ブ機能実行モードに設定された他方の制御装置Ｃｂを受信側として説明する。一方の制御装置Ｃａから所定の制御周期Ｗで時刻ｔａ１，ｔａ２，ｔａ３，…毎に送信された指令信号は、通信接続手段２１を介して他方の制御装置Ｃｂに前回のスレーブロボットＲｂへの制御時刻ｔｂ０，ｔｂ１，ｔｂ２…から所定時間Δｔ１，Δｔ２，Δｔ３，…経過後の各時刻（ｔｂ０＋Δｔ１），（ｔｂ１＋Δｔ２），（ｔｂ２＋Δｔ３），…において時系列的に受信される。
【００４６】
このようなマスタ側制御装置Ｃａからスレーブ側制御装置Ｃｂへの動作指令の通信接続手段２１を介する送信では、各制御装置Ｃａ，Ｃｂの制御手段４４ａ，４４ｂ（略称ＣＰＵ）に内臓される水晶発振器の個体差による発振周波数の微小な誤差に起因する受信時刻（ｔｂ０＋Δｔ１），（ｔｂ１＋Δｔ２），（ｔｂ２＋Δｔ３），…の送信時刻ｔａ１，ｔａ２，ｔａ３…に対する第１の通信遅れ時間、および前記通信接続手段２１を介することによる通信遅れ時間とスレーブ側制御装置Ｃｂがマスタ側制御装置Ｃａからの動作指令１，２，３，…を受信時刻（ｔｂ０＋Δｔ１），（ｔｂ１＋Δｔ２），（ｔｂ２＋Δｔ３），…で受信してからスレーブロボットＲｂの制御を開始する制御時刻ｔｂ１，ｔｂ２，ｔｂ３，…までのタイムラグによる第２の通信遅れ時間が存在するため、前記一方の制御装置Ｃａによって制御されるマスタロボットＲａの動作に対して、他方の制御装置Ｃｂによって制御されるスレ−ブロボットＲｂの動作のずれが発生し、同一時刻における各ロボットＲａ，Ｒｂ間の相対位置のずれは、作業精度上、無視できなくなってしまう。
【００４７】
上記第１の通信遅れ時間は、図４において、マスタ側（送信側）制御装置Ｃａが送信時刻ｔａ１で指令１を送信すると、送信された指令１はスレーブ側（受信側）制御装置Ｃｂに受信時刻（ｔｂ０＋Δｔ１）で受信される。この受信時刻（ｔｂ０＋Δｔ１）は、スレーブ側制御装置Ｃｂが自己が制御対象とするロボットＲｂに対する前回の制御時刻ｔｂ０から所定時間Δｔ１が経過した時刻であり、スレーブ側制御装置Ｃｂの最小割込み周期Ｔｓ（ｂ）を４カウント目のタイミング信号の発振時刻で受信している。
【００４８】
次に、１制御周期が経過した後の時刻ｔａ２で、マスタ側制御装置Ｃａが指令２を送信し、この指令２はスレーブ側制御装置Ｃｂによって、次の受信時刻（ｔｂ１＋Δｔ２）で受信されるが、上記のようにスレーブ側制御装置Ｃｂの制御手段４４ｂに内臓される水晶発振器は、マスタ側制御装置Ｃａの制御手段４４ａに内臓される水晶発振器に対して、各ＣＰＵ毎に水晶発振器の個体差による発振周波数の微小な誤差が存在するため、最小割込み周期Ｔｓ（ｂ）の１カウント目と２カウント目との間に到達した指令２は、前回の制御時刻ｔｂ１からみて２カウント目の時刻（ｔｂ１＋Δｔ２）で受信される。このように前回の制御時刻ｔｂ１からタイミング信号が３カウント未満で指令２を受信したときには、受信側の制御装置Ｃｂは自己の最小割込み周期Ｔｂ（ｂ）を短くし、受信時刻（ｔｂ１＋Δｔ２）が３カウント目以上でかつ５カウント目以下になるように制御する。
【００４９】
また、マスタ側制御装置Ｃａが時刻ｔａ３で送信した指令３は、スレーブ側制御装置Ｃｂに前回の制御時刻ｔｂ２からみて５カウント目と６カウント目との間に到達しているため、６カウント目で受信され、スレーブ側制御装置ＣｂはスレーブロボットＲｂに対して制御時刻ｔｂ３で制御する。したがってスレーブ側制御装置Ｃｂは、自己の最小割込み周期Ｔｓ（ｂ）を長くして、受信時刻（ｔｂ２＋Δｔ３）が前回の制御時刻ｔｂ２から３カウント目以上でかつ５カウント目以下になるように制御する。
【００５０】
このようにしてスレーブ側制御装置Ｃｂは、マスタ側制御装置Ｃａから各指令１，２，３，…が送信される時刻ｔａ１、ｔａ２，ｔａ３，…から、スレーブ側制御装置Ｃｂによって受信されて、このスレーブ側制御装置Ｃｂが自己のロボットＲａの制御を開始する時刻ｔｂ１，ｔｂ２，ｔｂ３，…までの時間（ｔｂ１−ｔａ０），（ｔｂ２−ｔａ１），（ｔｂ３−ｔａ２），…が、スレーブ側制御装置Ｃｂの制御周期Ｗを超えてしまうことが防がれる。これによってスレーブ側制御装置Ｃｂは、スレーブ側制御装置Ｃｂの１制御周期Ｗ内に、マスタ側制御装置Ｃａから複数の動作指令を受信してしまい、あるいは１制御周期Ｗ内に動作指令が受信されないという不具合が発生を確実に防止し、マスタロボットとスレーブロボットと高精度で協調動作させることができる。
【００５１】
さらに、マスタ側制御装置Ｃａとスレーブ側制御装置Ｃｂとを完全に同期させるためには、上記通信接続手段２１を介することによる通信遅れ時間とスレーブ側制御装置Ｃｂがマスタ側制御装置Ｃａからの動作指令１，２，３，…を受信時刻（ｔｂ０＋Δｔ１），（ｔｂ１＋Δｔ２），（ｔｂ２＋Δｔ３），…で受信してからスレーブロボットＲｂの制御を開始する制御時刻ｔｂ１，ｔｂ２，ｔｂ３，…までのタイムラグによる第２の通信遅れを解消する必要がある。そこで、第１の通信遅れを解消するために、上記のように制御されるスレーブ側（または受信側）制御装置Ｃｂの最小割込み周期Ｔｓ（ｂ）のｎ倍（たとえばｎ＝８）が前記制御周期Ｗに相当するとしたとき、マスタ側の制御時刻ｔａ１１，ｔａ１２，ｔａ１３，…をスレーブ側の制御時刻ｔｂ１，ｔｂ２，ｔｂ３，…に一致させる必要がある。そのため、マスタ側制御装置Ｃａは、指令値遅延部６６ａによって、動作指令値生成部６４ａにおいて生成された自己のロボットＲａへの制御時刻ｔａ１１，ｔａ１２，ｔａ１３，…を、各送信時刻ｔａ１，ｔａ２，ｔａ３，…から予め定める時間Ｔだけ遅延させる。
【００５２】
図５は、各ロボットＲａ，Ｒｂ間の相対位置の計測および設定の手順を説明するための図であり、図６は各ロボットＲａ，Ｒｂ間の相対位置の計測および設定を行う際に用いられる突合せ用ツール９０を示す側面図である。各ロボットＲａ，Ｒｂの相対位置関係を維持しながら各ロボットＲａ，Ｒｂを協調動作させるために、各ロボットＲａ，Ｒｂ間の相対位置関係を計測し、そのデータを双方の制御装置Ｃａ，Ｃｂに登録しておく必要があり、その手順について説明する。
【００５３】
各ロボットＲａ，Ｒｂ間の相対位置を計測し、設定するにあたって、各ロボットＲａ，Ｒｂの手首２８には、図６に示される突合せ用ツール９０がそれぞれ設けられる。この突合せ用ツール９０は、前記手首２８にボルトなどのねじ部材によって着脱可能に取り付けられる円板状のフランジ部９１と、フランジ部９１の中心軸線上に垂直に固定される円形断面を成す棒状部９２とを有する。前記棒状部９２の先端部分は先細状に形成され、さらに具体的には、円錐台状に形成される。
【００５４】
この突合せツール９０は、フランジ部９１の手首２８に接触する表面９３から棒状部９２の先端部分９４までの前記中心軸線方向の長さＬが正確にわかっている必要がある。この長さＬは、各ロボットＲａ，Ｒｂ間で突き合わせることができる長さに選ばれている。また前記突合せツール９０は、円板状のフランジ部９１に中心軸線上に棒状部９２を垂直に固定した構成であるので、各先端部分９４を突合せたときにその他の部位が相互に干渉せず、また周囲に対しても干渉することが防がれる。さらに前記棒状部９２の先端部分９４は、先細状とされるので、突合せが容易であり、しかも相互に突合せて接触させた状態でずれにくく、またずれた状態では被接触状態となって明確に認識されるため、正確に突合せすることができる。
【００５５】
図１７は、３点突合せによる各ロボットＲａ，Ｒｂ間座標系の校正手順を説明するための図である。３点突合せによる各ロボットＲａ，Ｒｂの相対位置の算出方法について説明する。他方のロボットＲｂの原点Ｏｂに関するベース座標系ΣＢａｓｅＢを、一方のロボットＲａのベース座標系ΣＢａｓｅＡに変換するための変換行列ＴＡＢと定義する。ここで、変換行列ＴＡＢは次のような同時変換行列とする。
【００５６】
【数１】
0003577028.tif 000002
【００５７】
一直線上には、任意の３点について突合せを行い、これによって得られるロボットＲａベース座標系ΣＢａｓｅＡにおけるロボットＲａのツール先端点の位置と、ロボットＲｂのベース座標系ΣＢａｓｅＢにおけるロボットＲｂのツール先端点の位置とをそれぞれ、点（ＰＡ，ＰＢ）、点（ＱＡ，ＱＢ）、点（ＲＡ，ＲＢ）とする。
【００５８】
次に、点ＰＡを原点とし、この点ＰＡから点ＱＡに向かう線分をＸ軸正方向として、点ＲＡをＸＹ平面（ただし、Ｙ＞０）に含むようなロボットＲａのベース座標系ΣＢａｓｅＡにおけるフレームをＦＡとする。
【００５９】
【数２】
0003577028.tif 000003
【００６０】
同様に、点ＰＢを原点とし、この点ＰＢが点ＱＢに向かう線分をＸ軸正方向として、点ＲＢをＸＹ平面（ただし、Ｙ＞０）に含むようなロボットＲＢのベース座標系ΣＢａｓｅＢにおけるフレームをＦＢとする。
【００６１】
【数３】
0003577028.tif 000004
【００６２】
このとき、フレームＦＡ，ＦＢと変換行列ＴＡＢとの間には、次式が成り立つ。
ＦＡ＝ＴＡＢＦＢ                                            …（１２）
したがって、変換行列ＴＡＢは次式によって求められる。
ＴＡＢ＝ＦＡ・ＦＢ−１                                        …（１３）
【００６３】
このような変換行列ＴＡＢは、自己（添え字Ａ側）から相手（添え字Ｂ側）への座標変換を行なう関数などとして、各制御装置Ｃａ，Ｃｂのメモリ４５ａ，４５ｂに格納される前記プログラムに記載されている。
【００６４】
図８は、マスタロボットの動作途中点Ｍｉに対応するスレーブロボットの動作途中点Ｓｉの算出方法を説明するための図である。まず、一方のロボットＲａをマスタロボットとし、他方のロボットＲｂをスレーブロボットとしたとき、マスタロボットおよびスレーブロボットの共通座標系Σ０において、マスタロボットＲａの動作開始点がＭｓ、動作終了点がＭｅで教示され、また前記共通座標系Σ０においてスレーブロボットＲｂの動作開始点がＳｓ、動作終了点がＳｅで教示されたとする。マスタロボットＲａの教示点ＭｓからＭｅへの移動するとき、マスタロボットＲａの動作中間点Ｍｉに対応するスレーブロボットＲｂの動作中間点Ｓｉを求める。
【００６５】
マスタロボットＲａの動作途中点Ｍｉは、パラメータｓを用いて求められる。このパラメータｓの値は、ｓ＝１のとき、マスタロボットＲａが動作開始点Ｍｓ到達し、ｓ＝０．０のとき動作終了点Ｍｅに到達するものとする。また、マスタロボットＲａが動作途中点Ｍｉにあるときのパラメータｓはｓｉで表し、このときのスレーブロボットＲｂの動作途中点をＳｉとする。マスタロボットＲａの動作開始点ＭｓからスレーブロボットＲｂの動作開始点Ｓｓへの変換行列をＴＡＢ（ｓ）とし、マスタロボットＲａの動作終了点ＭｅからスレーブロボットＲｂの動作終了点への変換行列をＴＡＢ（ｅ）とし、次式で表すものとする。
ＴＡＢ（ｓ）＝Ｓｓ・Ｍｓ−１                                …（１４）
ＴＡＢ（ｅ）＝Ｓｅ・Ｍｅ−１                                …（１５）
【００６６】
また上記の各変換行列ＴＡＢ（ｓ）、ＴＡＢ（ｅ）をＸＹＺオイラー角で表記するとき、ＴＡＢ（ｓ）は（Ｘｓ，Ｙｓ，Ｚｓ，Ｏｓ，Ａｓ，Ｔｓ）とし、ＴＡＢ（ｅ）は（Ｘｅ，Ｙｅ，Ｚｅ，Ｏｅ，Ａｅ，Ｔｅ）として、マスタロボットＲａの動作途中点Ｍｉに対する変換行列Ｔｉのオイラー角表記を、次式によって求める。
Ｘｉ＝Ｘｅ−（Ｘｅ−Ｘｓ）・ｓ                          …（１６）
Ｙｉ＝Ｙｅ−（Ｙｅ−Ｙｓ）・ｓ                          …（１７）
Ｚｉ＝Ｚｅ−（Ｚｅ−Ｚｓ）・ｓ                          …（１８）
Ｏｉ＝Ｏｅ−（Ｏｅ−Ｏｓ）・ｓ                          …（１９）
Ａｉ＝Ａｅ−（Ａｅ−Ａｓ）・ｓ                          …（２０）
Ｔｉ＝Ｔｅ−（Ｔｅ−Ｔｓ）・ｓ                          …（２１）
【００６７】
これらの式１４〜１９を変換行列Ｔｉと表記し、マスタロボットＲａの動作途中点Ｍｉに対するスレーブロボットＲｂの動作途中点Ｓｉは、
Ｓｉ＝Ｔｉ・Ｍｉ                                        …（２２）
によって求められる。
【００６８】
このようなマスタロボットＲａの動作途中点Ｍｉに対するスレーブロボットＲｂの動作途中点Ｓｉの関係式は、各制御装置Ｃａ，Ｃｂのメモリ４５ａ，４５ｂにプログラムとして格納されており、後述するように、各ロボットＲａ，Ｒｂのうちで任意にマスタロボットおよびスレーブロボットを設定して、協調動作させることができるように構成されている。
【００６９】
図９は、協調動作部位を教示する手順を説明するための各ロボットＲａ，Ｒｂのアーム先端部分９４ａ，９４ｂの移動経路を示す斜視図である。同図において実線はマスタロボットのアーム先端部分９４ａの移動経路を示し、破線はスレーブロボットのアーム先端部分９４ｂの移動経路を示す。図１０は、図９に示される各教示点に対応してマスタロボットおよびスレーブロボットを協調動作させるための協調動作プログラムの一例を示す図である。
【００７０】
次に、各協調動作のためのプログラムの作成および位置の教示を行う。このプログラムは、一方のロボットＲａによって実行されるプログラム「．ＰＲＯＧＲＡＭ  ｍａｓｔｅｒ（    ）」と、他方のロボットＲｂによって実行されるプログラム「．ＰＲＯＧＲＡＭ  ｓｌａｖｅ（  ）」とが作成される。
【００７１】
一方のロボットＲａ側に設定されるプログラム「．ＰＲＯＲＡＭ．  ｍａｓｔｅｒ（    ）」は、１〜２０のステップを有し、図９の実線で示される動作目標位置Ｐｍ０から各目標位置Ｐｍ１〜Ｐｍ９を経て動作終了位置Ｐａ１０に至る動作を、一方のロボットＲａに実行させるために、次のように構成される。
【００７２】
まず、ステップ１は、一方のロボットＲａの各軸を動作開始位置Ｐｍ０へ移動させるための動作命令であり、「ＪＭＯＶＥ    ＃１ｃ１＃０」と入力される。「ＪＭＯＶＥ」はロボットを指定した目標位置への各軸の補間動作における移動させるための命令である。「＃１ｃ１＃０」は動作目標位置Ｐｍ０を指示する変数名である。
【００７３】
ステップ２は、動作開始位置Ｐｍ０から次の目標位置Ｐｍ１へ一方のロボットＲａを移動させるための命令であり、「ＬＭＯＶＥ    ＃１ｃ１＃１」と入力される。「ＬＭＯＶＥ」は直線動作を指示する予約語であり、「＃１ｃ１＃１」は目標位置Ｐｍ１を指示する変数名である。
【００７４】
ステップ３は、前記ステップ２で指定した位置Ｐｍ１でハンド３０を閉じさせるための命令であり、「ＣＬＯＳＥ」と記載される。以上がマスタロボットＲａの単独動作のプログラムである。
【００７５】
次に、ステップ４は、協調動作を宣言する命令であり、「ＭＡＳＴＥＲ」と記載される。この命令によって、一方のロボットＲａがマスタロボットに設定され、他方のロボットＲｂ側でのスレーブ宣言されて、協調動作が開始する。マスタ機能実行モードの制御装置Ｃａが指令を送信して、これをスレーブ機能実行モードの制御装置Ｃｂが受信するまでには、通信による遅れが発生するが、スレーブ機能実行モードの制御装置Ｃｂの最小割込み周期Ｔｓ（ｂ）を、マスタ機能実行モードの制御装置Ｃａからの指令がスレーブ機能実行モードの制御装置Ｃｂに、たとえば上記のように３カウント未満で入力されたときには、最小割込み周期Ｔｓ（ｂ）を短くし、５カウントを超えて入力されたときには、最小割込み周期Ｔｓ（ｂ）を長くするとともに、マスタ機能実行モードの制御装置Ｃａの自己のマスタロボットＲａへの制御時刻ｔａ１１，ｔａ１２，ｔａ１３，…を、予め定める時間Ｔだけ遅延させて送信することによって、マスタロボットＲａに対するスレーブロボットＲｂの動作の遅れを防止し、各ロボットを高精度で同期させて、協調動作させることができる。
【００７６】
ステップ５は、マスタロボットＲａに対してハンド３０を閉じるための命令であり、「ＳＩＧＮＡＬ  ２」と記載される。
【００７７】
ステップ６は、スレーブロボットＲｂのハンド３０を閉じるための命令であり、「ＳＩＧＮＡＬ  ２：２」と記載される。
【００７８】
ステップ７は、各ロボットＲａ，Ｒｂを協調動作させながら次の目標位置Ｐｍ２，Ｐｓ２へ移動させるための命令であり、「ＭＬＬＭＯＶＥ    ＃１ｃ２＃２，＃１ｃ２＃２」と記載される。
【００７９】
ステップ８は、各ロボットＲａ，Ｒｂを次の目標位置Ｐｍ３，Ｐｓ３へ移動させるための命令であり、「ＭＬＬＭＯＶＥ    ＃１ｃ１＃３，＃１ｃ２＃３」と記載される。
【００８０】
ステップ９は、マスタロボットＲａを次の指令を満足するまで待機させるための命令であり、「ＳＷＡＩＴ    １００１」と記載される。
【００８１】
ステップ１０は、スレーブロボットＲｂを入出力回路４８ｂに次の指令を入力するまで待機させるための命令であり、「ＳＷＡＩ  ２：１００１」と記載される。
【００８２】
ステップ１１は、各ロボットＲａ，Ｒｂを次の目標位置Ｐｍ４，Ｐｓ４へ移動させるための命令であり、「ＭＬＣ１ＭＯＶＥ  ＃１ｃ１＃４，＃１ｃ２＃４」と記載される。
【００８３】
ステップ１２は、各ロボットＲａ，Ｒｂを次の目標位置Ｐｍ５，Ｐｓ５へ移動させるための命令であり、「ＭＬＣ１ＭＯＶＥ  ＃１ｃ１＃５，＃１ｃ２＃５」と記載される。
【００８４】
ステップ１３は、各ロボットＲａ，Ｒｂを次の目標位置Ｐｍ６，Ｐｓ６へ移動させるための命令であり、「ＭＬＣ２ＭＯＶＥ  ＃１ｃ１＃６，＃１ｃ２＃６」と記載される。
【００８５】
ステップ１４は、各ロボットＲａ，Ｒｂを次の目標位置Ｐｍ７，Ｐｓ７へ移動させるための命令であり、「ＭＬＬＭＯＶＥ    ＃１ｃ１＃７，＃１ｃ２＃７」と記載される。
【００８６】
ステップ１５は、各ロボットＲａ，Ｒｂを次の目標位置Ｐｍ８，Ｐｓ８へ移動させるための命令であり、「ＭＬＬＭＯＶＥ＃１ｃ１＃８，＃１ｃ２＃８」と記載される。
【００８７】
ステップ１６は、マスタロボットＲａの協調動作を解除するための命令であり、「ＡＬＯＮＥ」と記載される。
【００８８】
ステップ１７は、一方のロボットＲａのハンド３０を開くための命令であり、「ＯＰＥＮ」と記載される。
【００８９】
ステップ１８は、一方のロボットＲａに対して、タイマが変数名「１００２」で指示された状態を満足するまで待機させるための命令であり、「ＳＷＡＩＴ    １００２」と記載される。
【００９０】
ステップ１９は、一方のロボットＲａを変数名「＃１ｃ１＃９」で指示させるも目標位置Ｐｍ９へ直線移動させるための命令であり、「ＬＭＯＶＥ    ＃１ｃ１＃９」と記載される。
【００９１】
ステップ２０は、一方のロボットＲａを動作終了位置Ｐｍ１０へ移動させるための命令であり、「ＨＯＭＥ」と記載される。
【００９２】
次に、他方のロボットＲｂに対して設定されるプログラムについて説明する。この他方のロボットＲｂ用プログラム「．ＰＲＯＲＡＭ    ｓｌａｖｅ（    ）」は、１〜１０のステップを有し、図９の破線で示される動作目標位置Ｐｓ０から各位置Ｐｓ１〜Ｐｓ９を経て動作終了位置Ｐｓ１０に至る動作を、スレーブロボットＲｂに実行させるために、次のように構成される。
【００９３】
まず、ステップ１は、他方のロボットＲａの各軸を動作目標位置Ｐｓ０へ移動させるための動作命令であり、「ＪＭＯＶＥ    ＃１ｃ１＃０」と入力される。「ＪＭＯＶＥ」はロボットを指定した位置への補間動作における移動させるための命令である。「＃１ｃ１＃０」は動作目標位置Ｐｓ０の座標である。
【００９４】
ステップ２は、動作開始位置Ｐｓ０から次の位置Ｐｓ１へ他方のロボットＲｂを移動させるための命令であり、「ＬＭＯＶＥ    ＃１ｃ１＃１」と記載される。「ＬＭＯＶＥ」は直線動作命令であり、「＃１ｃ１＃１」は次の位置Ｐｓ１の座標である。
【００９５】
ステップ３は、前記ステップ２で指定した位置Ｐｓ１でハンド３０を閉じさせるための命令であり、「ＣＬＯＳＥ」と記載される。以上がスレーブロボットの単独動作のプログラムである。
【００９６】
次に、ステップ４は、他方のロボットＲｂを変数名「１００２」で指示される条件を満足するまで待機させるための命令であり、「ＳＷＡＩＴ    １００２」と記載される。
【００９７】
ステップ５は、自己がスレーブロボットとして動作することを宣言するための命令であり、「ＳＬＡＶＥ」と記載される。このプログラムの実行時においては、スレーブロボットＲｂは、マスタロボットＲａ側からの各ステップ５〜１５の命令に応答して協調動作を行う。この協調動作時は、前述したように、他方のロボットＲｂはネットワーク通信接続手段２１によって一方のロボットＲａに接続されるので、制御周期のずれを修正しながら相互に正確に同期して協調動作させることができる。
【００９８】
ステップ６は、協調動作を解除し、単独動作に戻ったことを宣言するための命令であり、「ＡＬＯＮＥ」と記載される。
【００９９】
ステップ７は、他方のロボットＲｂのハンド３０を開くための命令であり、「ＯＰＥＮ」と記載される。
【０１００】
ステップ８は、マスタロボットＲａおよびスレーブロボットＲｂの双方に対して指令を個別に設定するための命令であり、「ＳＩＧＮＡＬ  ２」と記載される。
【０１０１】
ステップ９は、他方のロボットＲｂを変数名「＃１ｃ２＃９」で指示される目標位置Ｐｓ９へ移動させるための命令であり、「ＬＭＯＶＥ    ＃１ｃ２＃９」と記載される。
【０１０２】
ステップ１０は、他方のロボットＲｂを動作終了位置Ｐｓ１０へ移動させるための命令であり、「ＨＯＭＥ」と記載される。
【０１０３】
このようにして各ロボットが実行する一連の作業のうちで、協調動作する行程については、各ロボットをマスタロボットとスレーブロボットとに設定して、前記通信接続手段を介して相互に通信し、高精度で同期させて協調動作させることができる。
【０１０４】
またスレーブ機能実行モードの制御装置Ｃｂは、入力手段から動作指令を入力すると、この動作指令は、通信接続手段を介してマスタ機能実行モードの制御装置Ｃａに入力される。このマスタ機能実行モードの制御装置Ｃａは、入力した動作指令に応答して制御動作を実行し、こうしてスレーブ側制御装置Ｃｂからの動作指令の入力によって、マスタロボットＲａを制御することができる。したがってオペレータは、マスタ側制御装置Ｃａからだけではなく、スレーブ側制御装置Ｃｂ側からも動作指令を入力して、場所的にスレーブロボットＲｂから離れた位置に設置されているマスタロボットＲａの動作を設定することができ、したがって協調制御システム全体を操作者の希望する場所から操作することが可能となり、操作上の利便性が向上される。
【０１０５】
さらにスレーブ機能実行モードの制御装置Ｃｂによって制御されるロボットＲａに接続されたエンドエフェクタなどの外部機器は、スレーブ機能実行モードに設定された制御装置Ｃｂの入出力回路（略称ＩＯ）４８ｂを用いて行なわれる。協調動作においては、マスタロボット側のメモリ４５ａに記憶されたプログラムの動作命令にしたがって動作するため、スレーブロボットＲｂに接続された外部機器の制御は、マスタロボットＲａの制御装置Ｃａに設けられる入出力回路４８ａを用いて行なわれ、そのために信号の配線が煩雑になり、スレーブロボットＲｂを単独で使用しようとした場合に、マスタロボットＲａの信号の影響を受けてしまう。このような不具合は、上記のようにマスタロボットＲａがスレーブ側制御装置Ｃｂの入出力回路４８ａを用いることによって、回避することができる。
【０１０６】
上述の実施の形態では、２台のロボットＲａ，Ｒｂに個別に設けられる２台の制御装置Ｃａ，Ｃｂを通信接続手段２１によって接続した構成について述べたが、本発明の実施の他の形態では、３台以上のロボットに個別に設けられる制御装置を通信接続手段によって接続して協調制御する構成に対しても、本発明を好適に実施することができ、高精度で各制御装置を同期させて、協調動作させることができる。
【０１０７】
【発明の効果】
請求項１記載の本発明によれば、単独機能実行モード、マスタ機能実行モードおよびスレーブ機能実行モードのいずれか１つをプログラム上の命令として設定しておくことによって、各ロボットをマスタロボットとスレーブロボットとに設定して、高精度で同期させて協調動作させることができる。
【０１０８】
また、マスタ側制御装置が動作指令を送信した時刻ｔａから、スレーブ側制御装置が前記動作指令を受信して自己のロボットの制御を開始する時刻ｔｂまでの通信遅れ時間（ｔｂ−ｔａ）が予め定める時間Ｔとなるように、最小割込み周期を変化させるので、スレーブ側制御装置が自己のロボットに対する制御を開始する時刻ｔｂが、前記マスタ側制御装置がマスタ側制御装置に対して動作指令を送信した時刻ｔａに対して、前記予め定める時間Ｔよりも長くなる方向および予め定める時間Ｔよりも短くなる方向に大きくずれることが防がれる。
【０１０９】
請求項２記載の本発明によれば、前記予め定める時間間隔Ｔが各制御装置の制御周期Ｗ以下に選ばれるので、マスタ側制御装置から動作指令が送信される時刻ｔａから、スレーブ側制御装置によって受信されて、このスレーブ側制御装置が自己のロボットの制御を開始する時刻ｔｂまでの時間（ｔｂ−ｔａ）が、制御周期Ｗを超えてしまうことが防がれる。これによってスレーブ側制御装置は、スレーブ側制御装置の１制御周期Ｗの時間内に、マスタ側制御装置から複数の動作指令を受信してしまうという不具合が発生を確実に防止し、マスタロボットとスレーブロボットとを高精度で協調動作させることが可能となる。
【０１１０】
請求項３記載の本発明によれば、マスタ機能実行モードの制御装置の指令値をスレ−ブ機能実行モードの制御装置の通信遅れ時間だけ遅延することによって、マスタロボットに対するスレーブロボットの動作の遅れを防止し、各ロボットを高精度で同期させて、協調動作させることができる。
【０１１１】
請求項４記載の本発明によれば、スレーブ機能実行モードの制御装置は、入力手段から動作指令を入力すると、この動作指令は、通信接続手段を介してマスタ機能実行モードの制御装置に入力される。このマスタ機能実行モードの制御装置は、入力した動作指令に応答して制御動作を実行し、こうしてスレーブ側制御装置からの動作指令の入力によって、マスタロボットを制御することができる。したがってオペレータは、マスタ側制御装置からだけではなく、スレーブ側制御装置側からも動作指令を入力して、場所的にマスタロボットから離れた位置に設置されているマスタロボットの動作を設定することができ、操作上の利便性が向上される。
【０１１２】
請求項５記載の本発明によれば、協調動作においては、マスタロボットのプログラムの動作命令にしたがって動作するため、スレーブロボットの信号の出入力は、マスタロボットの制御装置に設けられる入出力装置を用いて行なわれ、そのために信号の配線が煩雑になり、スレーブロボットを単独で使用しようとした場合に、マスタロボットの信号の影響を受けてしまうという不具合を、マスタロボットがスレーブ側制御装置の入出力装置を用いることによって、回避することができる。
【０１１３】
請求項６記載の本発明によれば、各制御装置には緊急停止手段が備えられるので、どの位置のロボットからでも、異常が発生したときに、前記緊急停止手段を用いて各ロボットの一部または全体を緊急停止させることができ、これによって安全性が向上される。
【０１１４】
請求項７記載の本発明によれば、マスタ座標系に設定された共通な３点を結ぶ仮想フレームを基準にして協調動作するので、各制御装置は、各ロボットの位置および姿勢、さらには位置および姿勢のずれを、常に共通な座標系上で各ロボットが相対的位置を正確に認識可能とし、各ロボットのいずれのロボットをマスタとして設定しかつスレーブとして設定しても、１つの座標系内で協調動作を高精度で制御することができる。
【０１１５】
請求項８記載の本発明によれば、マスタロボットとスレーブロボットとが実際の相対位置関係と設定された相対位置変換行列との間にずれがある場合、ツールの寸法に誤差がある場合、ロボットリンク長のばらつきがある場合、ゼロイング精度とも呼ばれるロボットの基準位置への設置精度自体にばらつきがある場合、ならびに負荷によるロボットアームのたわみの影響によって、相対的な位置および姿勢関係を一定に保つように制御しても、実際の位置および姿勢関係が一定に保たれない場合などの相対位置がずれる原因が存在しても、上記のようにマスタ機能実行モードに設定されたロボットの教示位置の他に、スレーブ機能実行モードに設定されるロボットの位置をも教示することによって、相対位置および姿勢を変更しながらスレーブロボットをマスタロボットに追従させて協調動作させることが可能となる。これによってマスタおよびスレーブの各ロボットの相対位置および姿勢のずれが時間経過とともに拡大することが防がれ、相対位置および姿勢関係を高精度に維持しながら、所定の動作を継続的に実行することができる。
【図面の簡単な説明】
【図１】本発明の実施の一形態のロボットの協調制御システム２０の全体の構成を示す系統図である。
【図２】各制御装置Ｃａ，Ｃｂの構成を示すブロック図である。
【図３】各制御装置Ｃａ，Ｃｂのソフトウェア上の構成を示すブロック図である。
【図４】各制御装置Ｃａ，Ｃｂを同期させるためのソフトウェアプログラムの構成を示す簡略化したブロック図である。
【図５】各ロボットＲａ，Ｒｂ間の相対位置の計測および設定の手順を説明するための図である。
【図６】各ロボットＲａ，Ｒｂ間の相対位置の計測および設定を行う際に用いられる突合せ用ツール９０を示す側面図である。
【図７】３点突合せによる各ロボットＲａ，Ｒｂ間座標系の校正手順を説明するための図である。
【図８】マスタロボットの動作途中点Ｍｉに対応するスレーブロボットの動作途中点Ｓｉの算出方法を説明するための図である。
【図９】協調動作部位を教示する手順を説明するための各ロボットＲａ，Ｒｂのアーム先端部分９４ａ，９４ｂの移動経路を示す斜視図である。
【図１０】図９に示される各教示点に対応してマスタロボットおよびスレーブロボットを協調動作させるための協調動作プログラムの一例を示す図である。
【図１１】従来の技術のロボットの協調制御システムのマスタロボットおよびスレーブロボットの各制御装置を同期させるためのソフトウェアプログラム上の構成の一部を示すブロック図である。
【図１２】他の従来の技術の協調制御システムに用いられる割込み方式によって各制御装置を同期させるソフトウェアプログラム上の手法を説明するためのブロック図である。
【符号の説明】
２０  ロボットの協調制御システム
２１  通信接続手段
２２  床
２３  基台
２４  旋回体
２５，２６，２７  アーム
２８  手首
２９  ワーク
３０  ハンド
３１ａ，３１ｂ；３５ａ，３５ｂ  ライン
３３ａ，３３ｂ  制御装置本体
３７ａ，３７ｂ  教示入力手段
４１ａ，４１ｂ  サーボ駆動手段
４２ａ，４２ｂ  パワーシーケンス回路
４３ａ，４３ｂ  操作パネル
４４ａ，４４ｂ  制御手段
４５ａ，４５ｂ  メモリ
４６ａ，４６ｂ  教示入力手段用インターフェイス回路
４７ａ，４７ｂ  パーソナルコンピュータ用インターフェイス回路
４８ａ，４８ｂ  入出力回路
４９ａ，４９ｂ  通信制御手段
５０ａ，５０ｂ  バスライン
５１  ハブ
５２ａ，５２ｂ  通信ケーブル
５３ａ，５３ｂ
６１ａ，６１ｂ  プログラム格納部
６２ａ，６２ｂ  プログラム解釈実行部
６３ａ，６３ｂ  スレーブ指令値生成部
６４ａ，６４ｂ  動作指令値生成部
６５ａ，６５ｂ  指令値送信部
６７ａ，６７ｂ  指令値受信部
６８ａ，６８ｂ  割込み処理部
６９ａ，６９ｂ  クロック発生部
Ｃａ，Ｃｂ  制御装置
Ｒａ，Ｒｂ  ロボット
ＳＷ１，ＳＷ２  停止スイッチ
ＳＷ３，ＳＷ４  ハンド開閉検出スイッチ
ＳＷ５，ＳＷ６  緊急停止スイッチ
【図１】
0003577028.tif 000005
【図２】
0003577028.tif 000006
【図３】
0003577028.tif 000007
【図４】
0003577028.tif 000008
【図５】
0003577028.tif 000009
【図６】
0003577028.tif 000010
【図７】
0003577028.tif 000011
【図８】
0003577028.tif 000012
【図９】
0003577028.tif 000013
【図１０】
0003577028.tif 000014
【図１１】
0003577028.tif 000015
【図１２】
0003577028.tif 000016