(57)【特許請求の範囲】
【請求項１】
第１のロボットファミリー情報（１２２）が記憶されているデータ領域を有する第１のコントローラ（１０４）に接続される第１のロボットアーム（１０２）と、
第２のロボットファミリー情報（１２６、１３０）が記憶されているデータ領域を有する第２のコントローラ（１０８、１１２）に接続される第２のロボットアーム（１０６、１１０）と、
信号を伝送するための、前記第１および第２のコントローラ間のネットワーク接続（１１４）と、
それぞれ前記第１および第２のロボットアームの協調的動作のために実行されるべきプログラム命令（１２４；１２８、１３２）を各々含む、前記第１のコントローラ内に記憶されたマスター主プログラム（１２２、１２４）および前記第２のコントローラ内に記憶されたスレーブ主プログラム（１２６、１２８；１３０、１３２）と、
を含んでなり、前記第１のロボットファミリー情報および前記第２のロボットファミリー情報は、ロボットファミリーのメンバーとして相互に連携する前記第１および第２のロボットアームが前記第１のコントローラおよび第２のコントローラのいずれに属するかを識別すると共に、さらに、
前記第１のコントローラにおいてマスター側のマスターティックカウントを生成するための手段（３０、３８）と、
前記第２のコントローラにおいてスレーブ側のシャドウティックカウントを生成するための手段（３２、４０）と、を含み、
マスター（１０）側とスレーブ（１２、１４）側とで共通の時刻情報を有するために、前記第２のコントローラ（１０８、１１２）から前記第１のコントローラ（１０４）に対し、前記ネットワーク接続（１１４）を介して、マスター側の時刻情報を繰り返し問い合わせる刻時問合せ機能部（６０、６２）と、
前記第１のコントローラ（１０４）から前記ネットワーク接続（１１４）を介して、前記第２のコントローラ（１０８、１１２）からの前記時刻情報の問合せに対して応答し前記マスターティックカウントの現行値を該第２のコントローラに送信する刻時問合せ応答機能部（６４）と、
前記マスター（１０）側のシステムメモリ（４６）において、前記第１のロボットアーム（１０２）の前記マスター主プログラムに含まれる前記プログラム命令のシーケンスを実行させる指令（２４）に対応するイベント情報（４２）に対して、前記時刻情報を元にした指令実行（７４）の目標刻時（５３)を示すタグ（５０）を、該指令実行（７４）が行われるより前に、付加する第１のロボットアーム用付加手段と、
前記スレーブ（１２、１４）側のシステムメモリ（４８）において、前記第２のロボットアーム（１０６、１１０）の前記スレーブ主プログラムに含まれる前記プログラム命令のシーケンスを実行させる指令（２６）に対応するイベント情報（４４）に対して、前記時刻情報を元にした指令実行（７８）の目標刻時（５５）を示すタグ（５２）を、該指令実行（７８）が行われるより前に、付加する第２のロボットアーム用付加手段と、を含み、
前記シャドウティックカウントは、前記ネットワーク接続を通した信号伝送遅延および前記第１のコントローラ（１０４）から伝送された前記マスターティックカウントの現行値で前記第２のコントローラ（１０８、１１２）上の現刻時カウントを調整したティックカウントであって、該第２のコントローラからの前記時刻情報の問合せの送信で始まり該第２のコントローラでの該時刻情報の問合せに対する応答の受信で終わる伝送周期の長さと該マスターティックカウントの現行値に基づいて前記第２のコントローラの現刻時カウントを調整したティックカウントであり、ここで、前記第１のコントローラおよび前記第２のコントローラはそれぞれ、前記の指令実行（７４）の目標刻時(５３)を示すタグ（５０）を付加した前記イベント情報（４２）および前記の指令実行（７８）の目標刻時（５５）を示すタグ（５２）を付加した前記イベント情報（４４）に従い、前記マスターティックカウントおよび前記シャドウティックカウントに基づいて前記プログラム命令を実行する、少なくとも２本のロボットアームの同期化システム。
【請求項２】
前記第１のロボットファミリー情報が、前記マスター主プログラムのヘッダ（１２２）であり、前記第２のロボットファミリー情報が前記スレーブ主プログラムのヘッダ（１０８；１１２）である請求項１に記載のシステム。
【請求項３】
前記第１および第２のコントローラのうちの少なくとも１つのコントローラ中に記憶される、前記主プログラムの実行をガイドするためのガイドルールセットを含み、前記第１および第２のコントローラが前記ガイドルールセットに従って、前記プログラム命令を実行し、かつ、前記ガイドルールセットは、各前記ロボットファミリー内の各ロボットを規定し、プロセスを同期化し、例外（エラー）処理を実行し、順方向プログラムを実行し、逆方向プログラムを実行し、ライン毎のプログラムを同期化し、および動きを同期化するための各機能を実施するための各ガイドルールを含む請求項１に記載のシステム。
【請求項４】
前記第１および第２のコントローラが、前記ガイドルールセットに従って、減速時間の長い方に基づいて前記第１および第２のロボットアームの動きの停止を同期化する請求項３に記載のシステム。
【請求項５】
前記第１および第２のコントローラが、前記ガイドルールセットに従って停止後の前記第１および第２のロボットアームの動きの再開を同期化する請求項４に記載のシステム。
【請求項６】
前記第１および第２のコントローラが、前記ガイドルールセットに従って前記第１および第２のロボットアームの単一段階（シングル・ステップ）動作を同期化し、ここに該単一段階動作は、前記マスター主プログラムおよび前記スレーブ主プログラムについてどちらかのプログラムの１ラインを実行し終える毎に、前記第１および第２のロボットアームを共に休止または停止する動作である請求項３に記載のシステム。
【請求項７】
第１のコントローラに接続される第１のロボットアームと、第２のコントローラに接続される第２のロボットアームとを少なくとも有し、該第１および第２のロボットアームにそれぞれ関連する制御プログラムに従って制御する方法において、
メモリ領域内に各前記ロボットアーム用の関連する制御プログラムを記憶する段階と、
ネットワーク接続を介して前記第１のコントローラと対応するデータ交換手段とを接続し、前記第２のコントローラと対応するデータ交換手段とを接続する段階と、
前記第１のコントローラにおいてマスター側のマスターティックカウントを生成する段階と、
マスター側とスレーブ側とで共通の時刻情報を有するために、前記第２のコントローラから前記第１のコントローラに対し、前記ネットワーク接続を介して、マスター側の時刻情報を繰り返し問い合わせる段階と、
前記第１のコントローラから前記ネットワーク接続を介して、前記第２のコントローラからの前記時刻情報の問合せに対して応答し前記マスターティックカウントの現行値を該第２のコントローラに送信する段階と、
前記第２のコントローラにおいて、前記ネットワーク接続を通した信号伝送遅延および前記第１のコントローラから伝送された前記マスターティックカウントの現行値で前記第２のコントローラ上の現刻時カウントを調整したティックカウントであって、該第２のコントローラからの前記時刻情報の問合せの送信で始まり該第２のコントローラの該時刻情報の問合せに対する応答の受信で終わる伝送周期の長さと該マスターティックカウントの現行値に基づいて前記第２のコントローラ上の現刻時カウントを調整したティックカウントであるスレーブ側のシャドウティックカウントを生成する段階と、
前記マスター側において、前記第１のロボットアームの制御プログラムのシーケンスを実行させる指令に対応する第１のイベント情報に対して、前記時刻情報を元にした指令実行の目標刻時を示す第１のタグを、該指令実行が行われるより前に、付加する段階と、
前記スレーブ側において、前記第２のロボットアームの制御プログラムのシーケンスを実行させる指令に対応する第２のイベント情報に対して、前記時刻情報を元にした指令実行の目標刻時を示す第２のタグを、該指令実行が行われるより前に、付加する段階と、を含み、かつ、
前記制御プログラムの実行をガイドするガイドルールセットをデータ領域内に記憶する段階と、
異なる前記制御プログラムのそれぞれに対応して、前記ガイドルールセットの中のいずれかのガイドルールを選択する段階と、
前記第１のロボットアームと前記第２のロボットアームとを同期的に制御すべく、前記ネットワーク接続を通してデータを生成するため前記ガイドルールセットに従って前記制御プログラムを実行する段階と、
を有する方法。
【請求項８】
前記ロボットアームのうちの１本がファミリーヘッドロボットでありもう１本がファミリーメンバーロボットである、少なくとも２本のロボットアームがロボットのファミリーを構成する請求項７に記載の方法。
【請求項９】
前記データ領域が、各前記制御プログラムのプログラムヘッダの一部であり、該プログラムヘッダが該少なくとも２つのロボットアームを前記ロボットのファミリーに含まれるものとして識別する請求項８に記載の方法。
【請求項１０】
前記少なくとも２本のロボットアームの運動および該少なくとも２本のロボットアームにより実行されるアプリケーションプロセスのうちの少なくとも１つを同期化する段階を含む請求項８に記載の方法。
【請求項１１】
前記運動の始めおよび終りのうちの少なくとも一方において該運動を同期化する段階を含む請求項１０に記載の方法。
【請求項１２】
前記アプリケーションプロセスの始めおよび終りのうちの少なくとも一方において該アプリケーションを同期化する段階を含む請求項１０に記載の方法。
【請求項１３】
前記ガイドルールセットの中から選択されたガイドルールに従って順方向プログラムの実行および逆方向プログラムの実行のうちの少なくとも１つを実施する段階を含む請求項７に記載の方法。
【請求項１４】
前記第１のロボットアームと前記第２のロボットアームとを同期的に制御するために、ティーチペンダント、安全信号、センサの出力、または外部デバイスなどに由来する外部からの入力を受信する段階を含む請求項７に記載の方法。
【請求項１５】
周期的にデータを通信する段階を含み、該周期的なデータ通信が行われるデータ通信期間のうちの少なくとも１つで通信不具合に起因して失われたデータが、該データ通信期間のうちの少なくとも１つの後続するものから、回復のために入手可能である請求項７に記載の方法。
【請求項１６】
前記ガイドルールセットは、各前記ロボットファミリー内の各ロボットを規定し、プロセスを同期化し、例外（エラー）処理を実行し、順方向プログラムを実行し、逆方向プログラムを実行し、ライン毎のプログラムを同期化し、および動きを同期化するための各機能を実施するための各ガイドルールを含む請求項７に記載の方法。
【請求項１７】
前記同期化は、少なくとも２本のロボット間で前記例外（エラー）処理に関する情報を通信することを含む請求項１６に記載の方法。
【請求項１８】
周期的な間隔でデータを交換するための手段を通してデータを通信する段階を含む請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、協調的または協同的な運動において多数のロボットを制御するための装置およびシステムに関する。
【０００２】
関連出題の相互参照
本出願は、２００５年５月６日付けの米国仮特許出願第６０／６７９，９１９号の利益を請求するものである。
【０００３】
本発明はまた、ネットワーク内で接続された電子コントローラが発出する指令のタイミングを協調させることに関する。より特定的には、本発明は、少なくとも１つの他のコントローラによって生成された指令と同期化されるコントローラからの指令に応えて、ロボットアームといったようなアクチュエータが実施する活動またはイベントに関する。
【背景技術】
【０００４】
ロボットシステムがさらに高度なものになっていくにつれて、多数のロボットが、与えられたタスクについて一緒に作業する必要が出てくる。例えば、あるロボットが動作を実施する予定の被加工品を、もう１つのロボットが保持している場合、そのタスクを効率良く完逐すべく、双方のロボットの動きが正確に協調されなくてはならない。
【０００５】
ロボットマニピュレータの密な協調を達成するための従来の方法は、それらを同一のコントローラのハードウェアに接続することである。この技術は、運動軸または自由度の数が限られている場合に、適用可能である。ロボット製造業者にとっては、ロボットマニピュレータおよびサーボシステムのグループの考えられる組合せおよび順列を全て提供するのは困難である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
これらの欠点を克服するため、多数のコントローラを用いて、ロボットマニピュレータのマルチアームシステムを制御することができる。システム内の各コントローラおよびマニピュレータは、汎用品で良く、システム内のロボットの数は、ネットワーク化されたコントローラの融通性のため非常に多くなる。しかし、各コントローラは、独立したタイミングシステムを必要とし、このことが、このアプローチの主たる欠点である。マルチロボットシステムの能力を完全に利用するためには、共通の時間基準が好まれる。
【０００７】
ある先行技術システムは、ハードウェアの使用を通して共通のタイミングを提供するが、これは、全てのロボットコントローラのクロックを相互接続する必要のある技術である。ＩＥＥＥ−１５８８プロトコルにて実施されたこのようなハードウェア機構の１つは、ハードウェア内の共通タイミングを提供するために特定の機構を利用している。先行技術におけるもう１つの機構には、きわめて精密なクロック回路が含まれている。これらの各々に必要とされるハードウェアは、専門化され高価なものである。
【０００８】
通信ネットワークにより相互接続された電子コントローラ間において、数マイクロセカンド未満の正確度をもつタイミングを協調させるために、ハードウェアを使用することが可能であるが、そのような正確度は、産業ロボットを制御するためのシステムにおいては必要でない。
【０００９】
本発明は、標準的な多目的通信ネットワークを介して、ソフトウェア内のコントローラ間の共通タイミング情報を提供する。特別なハードウェアは１つも必要とはされない。各コントローラ上のクロックは正確である必要はなく、他のコントローラ上のクロックとも独立した形で作動することができる。スレーブまたはシャドウコントローラが、マスターコントローラと通信して、スレーブコントローラ上のシャドウ刻時（ｔｉｃｋ）カウントを更新するのに用いられるタイミング補正を周期的に判定する。この技術により、ネットワーク化されたコントローラがそれぞれ生成するイベント指令信号を相互に数ミリセカンド内に同期化することが可能となる。
【００１０】
本発明による方法およびシステムは、ロボットのコントローラおよび電子指令信号に応答する他のアクチュエータおよびマニピュレータに適用することができる。
【課題を解決するための手段】
【００１１】
本発明による方法は、通信ネットワークにより相互接続されたコントローラシステム内でイベントの発生を同期化する。該方法は、マスターコントローラおよびスレーブコントローラ上において、各該コントローラ上で１つのクロックにより生成した刻時カウントを維持する段階を含む。これからのイベントが発生すべき目標刻時カウントが確立される。スレーブコントローラは、マスターコントローラ上の現刻時カウントについての問合せをマスターコントローラに対し反復的に送信し、マスターコントローラは、自らの上の現刻時カウントをもってスレーブコントローラに応答する。マスターコントローラから伝送された現刻時カウントおよび問合せ−応答伝送周期の長さに基づいて、スレーブコントローラ上のシャドウ刻時カウントが確立され、スレーブコントローラ上のクロック刻時だけ増分される。マスターコントローラは、自らの上の目標刻時カウントの発生時点でイベントを指令し、スレーブコントローラは、シャドウ刻時カウントが目標刻時カウントと整合する場合にイベントを指令する。
【００１２】
本発明は、ロボットおよびその他のマニピュレータおよびデバイスを含む、コンピュータ制御された機械のガイド型（ｇｕｉｄｅｄ）プログラミング方法に関する。該プログラミング方法は、プログラムの実行の挙動を支配するガイドルール（ｇｕｉｄｅ ｒｕｌｅ）を含む。プログラムは、機械の運動を制御することができる。プログラムはまた、運動が関与するかまたは関与しない可能性のあるアプリケーションプロセスも制御することもできる。アプリケーションは、タスクを完成させるのに必要とされるプロセスに関係する一般的な用語である。アプリケーションは、そのタスクの実行中に運動が関与してもしなくてもよい。
【００１３】
ガイドルールは、時間ベースの同期化を規定することができる。何度も所望される同期化は、システム内の全てのロボットおよびプロセスが準備完了状態にある最も早い時間である。ガイドルールは、共通時間に対するスタート時間をファミリーヘッドが通信するものと規定することができる。こうして、通信遅延の予測が可能となる。
【００１４】
本発明による上記ガイドルールは、以下の機能、１）ファミリー内の各ロボットを規定、２）プロセス同期化、３）例外（エラー）を処理、４）順方向プログラム実行、５）逆方向プログラム実行、６）ライン毎のプログラム同期化、および７）動きの同期化、を実施する。
【００１５】
本発明の以上のならびにその他の利点は、添付図面と照らし合わせて考慮した場合に、以下の好ましい実施形態の詳細な説明から、当業者には容易に明らかとなるであろう。
【図面の簡単な説明】
【００１６】
【図１】本発明を適用できるマルチロボットシステムの全体的概略図である。
【図２】図１のマスターコントローラおよび１つのスレーブコントローラの概略的ブロック図である。
【図３】本発明に従って動作するマルチロボットシステムを示す図である。
【図４】図３に示すシステムのマスターロボットとスレーブロボットの１つとの間のプロセス同期化を示す図である。
【図５】図３中に示すロボットシステムの停止および再開の同期化を行うタイミング図である。
【図６】図３に示すロボットシステムの運動開始同期化のタイミング図である。
【図７】図３に示すマスターロボットおよび１つのスレーブロボットの単一段階動作を例示する図である。
【図８】多数のグループの運動のための図１に示すマルチロボットシステムの代替的実施形態の概略図である。
【発明を実施するための形態】
【００１７】
２００５年５月６日に提出された米国仮特許出願番号第６０／６７９，９１９号は、本発明の全体に亘って取り入れている。
【００１８】
本発明は、２００５年３月１日に出願され、本発明の全体に亘って参考として取り入れている同時係属米国特許出願番号第１１／０６９，１２６号内に記述された通信ネットワークにより相互接続されたコントローラのシステム内のイベント発生を同期化する方法を利用している。図１を参照すると、システムは、無線ネットワーク、光ネットワークまたは有線ネットワーク等である通信ネットワーク１６によって相互接続された、ある数「Ｎ」個のロボットコントローラ１０、１２、１４を含む。コントローラ１０はマスターコントローラであり、コントローラ１２、１４はシャドウコントローラである。図１は、各ロボットコントローラ１０、１２、１４が、各ロボット１８、２０、２２とそれぞれ通信するシステムを例示するものの、各コントローラは複数のロボットと通信してもよい。それぞれのコントローラと連携したロボットの動きは、好ましくは各コントローラから反復的に発出し、関連するロボットへと送信される電子信号の指令により制御される。システムは、その各ロボットが、それぞれのコントローラから実質的に同時に指令を受信し、かくして各ロボットの動きが該システムの他のロボットの動きと同期化され協調させられるように、各コントローラ１０、１２、１４からの指令の発出を協調させる。
【００１９】
この方法は、ロボットシステムに関して論述されているが、その各々が少なくとも１つのこのようなアクチュエータを制御する多数のコントローラから発せられる指令に対して同期的に応答して、実質的に同時に反応するその他の種類のアクチュエータの制御にも適用可能である。
【００２０】
各コントローラ１０、１２、１４は、ロボット指令を生成する指令機能２４、２６、２８を有する。指令機能２４、２６、２８は互いに独立しており、各コントローラの制御下にあるロボットに対し特定の場所へ移動するように命令するといった指令シーケンスであるロボット制御プログラムを実行する。それらのそれぞれの指令に応答したロボットの動きは、イベントと呼ばれる。
【００２１】
各ロボットは、コントローラからの指令に応えて電動機によって駆動されたときに回転する連接継手により連結された複数の分割されたセグメント上に端部が支持されたアームを有する。継手の連接は、ロボットアームの端部を所定の場所に移動させる。往々にしてロボット制御プログラムは、グリッパまたはプロセス機器といったようなロボットアームに取付けられた追加設備に指令を与える。塗料吹き付け器、アーク溶接器等といったプロセス機器の場合、ロボットの運動とプロセスは密に結合されている。例えば、塗料吹き付け器は、移動するロボットアームが塗装すべき被加工品に隣接する所定の場所にあるまさにそのときに塗料を吹き付けるように起動されなくてはならない。
【実施例】
【００２２】
図２は、マスターコントローラ１０および１つのシャドウコントローラ１２の詳細を例示しているが、該システムは任意数のシャドウコントローラを含むことができ、該方法はこれに適用される。アクチュエータ指令の正確なタイミングを容易にするため、各コントローラ内に常駐する符号化されたコンピュータ読取り可能ソフトウェアが、データバス３４、３６により水晶クロック３８、４０に結合された刻時カウント３０、３２を提供する。各カウンタ３０、３２は、ほぼ数ミリセカンド毎の間隔でそれぞれのクロック３８、４０によって生成される刻時または信号のカウントを維持する。各コントローラ１０および１２の指令に応答して発生するイベントは全て、各コントローラ上の刻時カウントまたはシャドウ刻時カウントに基づいて同期化される。
【００２３】
各刻時カウンタ３０、３２は、その刻時カウンタ３０内の特定のカウントの発生時にマスターコントローラ１０により実行されるべきイベントおよびそのシャドウ刻時カウンタ３２内での特定のカウントの発生時に、シャドウコントローラ１２によって実行されるべきイベントに関するイベント情報をタグ付けすべく、ロボット指令システムによって使用される整数を提供する。次のイベントにおいてロボットアームが移動すべき場所を含み得るイベント情報４２、４４が、コントローラメモリ４６、４８の中にある。関連するイベントに対応する目標刻時でタグ付けされたイベント情報が、対応するコントローラメモリ４６、４８内の５０、５２に存在する。
【００２４】
ロボット指令機能２４、２６は、これからのイベントが発生することになる目標刻時カウント５３、５５を予想することができる。イベント情報４４は、そのイベントが発生する前に、通信ネットワーク１６を介してスレーブコントローラ１２に通信される。標準的通信ネットワークは、２０ミリセカンドを超え得る待ち時間を有することから、イベントの前にイベント情報の準備が必要である。イベントのための準備により、全てのコントローラは、カウンタが各目標刻時に到達する前に、イベント情報をタグ付けさせ、目標刻時カウントにおいてトリガーする準備ができた状態にさせることができる。
【００２５】
図１に示すように、マスターコントローラ１０は刻時マスター機能５４を含み、スレーブコントローラ１２、１４は各々、刻時シャドウ機能５６、５８を含む。これらの機能５４、５６、５８は、スレーブコントローラ上の刻時カウント３２がマスターコントローラ上の刻時カウント３０と同じになるようにする。ロボットおよびプロセス動作を各コントローラにおいて同期化させる必要がある場合、基準刻時カウントは、イベントが確実に各コントローラ上で同じ刻時カウントで発生するようにする。
【００２６】
刻時予測ソフトウェアは、システム中のイベントが発生することになる目標刻時カウントを反復的に決定する。それは、システム中のイベントの各々についてイベント情報およびデータを生成し、その情報およびデータにそれぞれの目標刻時カウントでタグ付けする。このデータは全てのコントローラに通信され、そこで各目標刻時カウントが発生するまで保持される。現刻時カウントがひとたび目標刻時カウントと整合すると、イベントはトリガーし、同じ刻時において全てのコントローラロボット上で、タグ付けされた情報およびデータが実行される。
【００２７】
スレーブコントローラ１２、１４は各々、ネットワーク１６上のメッセージを、マスターコントローラ１０上の刻時問合せ応答機能６４に送信する刻時問合せ機能６０、６２を提供する。現刻時カウントについてのスレーブコントローラからの問合せに応答して、マスターコントローラ１０は、スレーブコントローラ１２、１４に対しマスター刻時カウント３０の現行値を送信する。
【００２８】
問合せ機能６０、６２は、問合せがそれぞれのスレーブコントローラから送信された正確な時刻と、応答がそれぞれのスレーブコントローラで受信された正確な時刻とを用いて、問合せの送信で始まり応答の受信で終わる伝送周期の長さを計算する。その伝送周期が予め定められた周期より長い場合、応答の刻時カウントは無視され、新しい問合せが直ちに送信される。各スレーブコントローラで受信されたマスター刻時カウントおよび伝送周期の長さに基づき、各スレーブコントローラについてのシャドウ刻時カウント調整が、マスター刻時カウントとスレーブ刻時カウントとの間の差に該伝送周期の長さの半分を加えたものとして、計算される。この補正または調整は、各スレーブコントローラ上のシャドウ刻時カウント３３を決定すべく、各スレーブコントローラ１２、１４上の現刻時カウント３２に適用される。シャドウ刻時カウント３３はその後、スレーブコントローラ１２上のクロック４０により生成された各刻時だけ増分される。
【００２９】
コントローラ１０、１２、１４の同期化を維持するために、各コントローラ上の刻時カウント３０、３２は自立的に更新を続け、現行のそれぞれの調整のために調整されたシャドウ刻時カウント３３は、スレーブコントローラ１２、１４上で自立的に更新を行う。マスターコントローラ１０上の目標刻時カウント５３に到達する前に、目標刻時カウントに対応するイベント指令情報４２はプログラム指令２４の中で識別され、５０で次の目標刻時カウントでタグ付けされているはずである。マスターコントローラ１０上のタグ付けされたイベント指令情報４２は、到達すべき次の目標刻時カウントに備えてメモリ４６内に保持される。７２で刻時カウント３０および目標刻時カウント５３が整合した場合に、マスターコントローラ１０は、目標刻時カウント５３に対応するタグ付けされたイベント指令情報４２の実行７４を指令する。
【００３０】
同様にして、各スレーブコントローラ１２、１４上のそれぞれの目標シャドウ刻時カウントに到達する前に、それぞれの目標シャドウ刻時カウントに対応するイベント指令情報４４はプログラム指令２６内で識別され、５２においてそれぞれの目標シャドウ刻時カウントでタグ付けされているはずである。各スレーブコントローラ１２、１４上のタグ付けされたイベント指令情報４４は、到達すべき目標シャドウ刻時カウントに備えてメモリ４８内に保持される。７６でスレーブコントローラ１２上の目標刻時カウント５５とシャドウ刻時カウント３３とが整合したとき、スレーブコントローラ１２は、目標刻時カウント５５に対応するタグ付けされたイベント指令情報４４の実行７８を指令する。
【００３１】
コントローラ１０、１２、１４上のクロック３８、４０内の電子水晶発振器は正確ではない。標準で低価格のハードウェアシステムは、５００００分の１未満の正確度しかもたないことから、時が経つと刻時シャドウカウント３３はマスター刻時カウント３０とに対してドリフトすることになる。このドリフトに対処するために、刻時カウント問合せが周期的にマスターコントローラ１０に送信される。刻時シャドウ機能５６、５８は、このクロックドリフトに対処すべく、増分的に刻時シャドウカウント３３を調整することができる。
【００３２】
クロックドリフトはある程度一定の割合で続くことから、刻時カウントの調整は規則的な間隔で起こる。標準的な実装においては、スレーブコントローラ１２、１４上の刻時カウント３３は、約２分の動作毎に１刻時カウントにより調整され得る。スレーブコントローラ１２、１４上の刻時問合せ／調整機能６０、６２は、刻時カウント調整およびアクセス履歴データを監視して、調整から調整までの平均時間および最後の調整が行われてからの動作周期の長さを決定する。この情報から、スレーブコントローラ１２、１４は次の刻時カウント調整が必要とされることになる時刻を推定する。スレーブコントローラからの刻時カウント問合せは、その時点でマスターコントローラに送信される。
【００３３】
この推定値は、必要とされる調整の大きさに加え刻時の位相を計算するために使用される。刻時カウント３０が変化する瞬間に刻時整合７２が起こり、刻時カウント３２が変化する瞬間に刻時整合７６が起こる。コントローラは全て独立した刻時カウント３０、３２を有することから、マスターコントローラ１０上の刻時カウント３０およびスレーブコントローラ１２、１４上のシャドウ刻時カウント３３は同時には増分しない。この位相ずれ増分は、それぞれのコントローラ上でイベントがトリガーしたときにプラスまたはマイナス１刻時の誤差をひき起こす可能性がある。最良の場合には、２つのコントローラ上の刻時は正確に同じ瞬間で増分し、誤差ゼロであり、刻時は「同相」であると言われる。最悪の場合には、スレーブコントローラ上の刻時は、マスターコントローラ上の刻時の直前または直後に増分し、１刻時の誤差を招く。この方法を使用するシステムは、位相誤差を２分の１刻時以下に低減すべく、クロックドリフトを監視する。
【００３４】
この方法は、イーサネット（登録商標）といったような標準で低価格のネットワークが有する非決定性に取り組んでいる。各刻時カウント毎に刻時問合せを実施するのは非実用的である。例えば、刻時カウントは２ミリセカンド毎に増分し得るが、標準的通信ネットワーク上で１つのメッセージのみを送信するのに２０ミリセカンドもかかる可能性がある。
【００３５】
本発明は、ロボットおよびその他のマニピュレータおよびデバイスを含むコンピュータ制御された機械のガイド型プログラミング方法に関する。該プログラミング方法は、プログラムの実行の挙動を支配するガイドルールを含む。プログラムは機械の運動を制御することができる。プログラムはまた、運動が関与するまたは関与しない可能性のあるアプリケーションを制御することもできる。アプリケーションは、タスクを完成させるのに必要とされるプロセスに関係する一般的な用語である。アプリケーションプロセスには、そのタスクの実行中に運動が関与してもしなくてもよい。アプリケーションプロセスの例としては、スポット溶接、アーク溶接、塗装、送り出し、研磨、研摩、マテリアル・ハンドリング、レーザ切断および溶接が含まれる。アプリケーションプロセスは、機械と外部オブジェクトまたはタスクとの間の相互作用が存在するあらゆるプロセスを含むことができる。
【００３６】
異なるガイドルールを、異なるタイプのプログラムに適用することができる。例えば、スポット溶接プログラムは、アーク溶接プログラム以外の運動およびプロセスの同期を支配する異なるルールを有し得る。アプリケーションプロセスは、ウィービングまたはサーボガン作動といったプロセスに関連する運動を含むことができる。
【００３７】
ガイドルールは、ロボットファミリーを含むロボット群の間の相互作用を支配し得る。ロボットファミリーは、ファミリーヘッドと称される１つのロボットと、ファミリーメンバーと称される残りのロボットとを有する。全てのファミリーメンバーは、ファミリーヘッドと通信し、ファミリーヘッドは全てのファミリーメンバーと通信できる。単一のプログラムは、多数のロボットを含み得るが、プログラム内の１つのロボットのみがファミリーメンバーと称される。
【００３８】
ガイドルールはプログラムの実行をガイドし、各プログラムと連携している。ガイドルールは、プログラムヘッダに付随するデータ領域内に記憶されるか、またはプログラム自体に付属させるか、またはプログラムの外部に記憶される。多数のルールによりガイドルールセットを構成する。サブプログラムは、呼出しプログラムのルールを利用するか、または呼出しプログラムのルールに加えてまたはこれらの代わりに適用可能である独自のルールセットを有することができる。
【００３９】
ロボットファミリー内の異なるプログラムは、異なるガイドルールのセットを有することができる。ガイドルールは、ロボット運動の同期化をガイドすることができる。ロボット間の通信は、コンピュータネットワーク上、コンピュータバス上で、デジタルＩ／Ｏを通して、またはコンピュータ間の情報の移行を可能にするその他のあらゆる手段を通して行い得る。
【００４０】
ルールは、同時にロボットファミリーの全てのメンバーが運動を開始することを要求できる。もう１つのルールは、その運動が同時に開始し、同時に終了することを要求できる。その他のルールは、位置および速度が、１またはそれ以上のその他のロボットにより担持されている部品との関係におけるものとなるように、ロボット運動が協調させられているか否かを判定することができる。
【００４１】
その他のルールは、多数のロボットをその他のロボットの運動に対して同期化させる方法を設定し得る。例えば、アーク溶接用ロボットは、いずれかのロボットがプロセスを開始する前に全てのロボットが所定の位置にあることを必要とするかもしれない。こうして、アーク溶接の関連部分についての重要な重力が維持される。一方、スポット溶接用ロボットは、他の溶接用ロボットの状態とは無関係にロボットがプロセスを開始できるようにするかもしれない。スポット溶接用ロボットでは、いずれのハンドリング用ロボットもスポット溶接の実行中停止させられることを必要とするかもしれない。
【００４２】
ガイドルールは、ファミリー間のプログラムのライン毎の順方向または逆方向実行を同期化できる。ガイドルールは、ロボットファミリーのうちのどのロボットがプログラムを実行することになるかを決定できる。ガイドルールは、プロセスのライン毎の実行の挙動を決定する。
【００４３】
ルールは、ユーザがティーチペンダント上の順方向ステップまたは逆方向ステップキーを押すことといった、外部入力に基づいて挙動を規定することができる。外部入力はｅ−ストップ、ティーチペンダント有効化、デッドマンスイッチ、フェンス等といった安全信号に由来するものであり得る。外部入力はまた、センサの出力または外部デバイスに由来する可能性もある。
【００４４】
ガイドルールは、運動またはプロセスが実行中に停止された場合の挙動を規定できる。停止条件は、外部入力またはプログラム条件から開始され得る。停止シーケンスは、減速運動開始の同期化も含むことができる。それは、減速の終りの同期化を含む可能性がある。この同期化は、運動を停止させる条件の処理前、処理の間および処理後に、ロボットファミリーが空間的関係を維持できるようにすることができる。
【００４５】
ガイドルールは、運動またはプロセスがまず、停止された後に再開させられる場合の挙動を規定することができる。再開シーケンスは、運動が停止した位置に全てのロボットが復帰することが含まれ得る。ルールは、運動が停止した位置よりプログラム経路に沿って幾分かの距離だけ前にある位置まで復帰することを規定できる。ルールは、公称経路に沿った運動およびプロセスの再開を同期化することを規定できる。ルールは、公称運動の実行中のプロセスの再開に備えた停止位置までの運動中のプロセスシーケンスの再開を規定することができる。
【００４６】
ガイドルールは、時間ベースの同期化を規定することができる。何度も所望される同期化は、システム内の全てのロボットおよびプロセスが準備完了状態にある最も早い時間である。ガイドルールは、共通時間に対するスタート時間をファミリーヘッドが通信するものと規定することができる。こうして、通信遅延の予測が可能となる。ファミリーヘッドからの通信は、周期的間隔で発生し得る。各通信は、先行する通信からのデータの一部分を含むことができる。こうして、失われたデータを後続する通信から回復できることから、システムの性能を変えることなく、時々生ずる通信データの喪失または遅延を考慮に入れることになる。
【００４７】
図３には、停止運動および再開運動の間およびロボット運動が中断された後のマルチロボットの同期化が関与する本発明によるシステム１００が示されている。該システム１００は、コントローラ１０４に接続された「ファミリーヘッド」つまりマスターロボット１０２と、コントローラ１０８に接続された第１の「ファミリーメンバー」またはスレーブロボット１０６と、コントローラ１１２に接続された第２の「ファミリーメンバー」またはスレーブロボット１１０と、を含む。コントローラ１０４、１０８および１１２は、ネットワーク接続１１４といったデータ交換手段を介して通信状態にある。２つのスレーブロボット１０６および１１０は例示を目的としたものにすぎず、ファミリーは、１またはそれ以上の「ファミリーメンバー」ロボットを有し得る。また、マスターコントローラ１０４に接続されているものとして示されているのは、ティーチペンダント１１６、プログラマブル・ロジック・コントローラ（ＰＬＣ）１１８および「ファミリーメンバー」でないロボット１２０である。
【００４８】
本発明には、ロボット運動の中断が発生する前の正常な運動実行中に、多数のロボット運動を同期化するための目標刻時カウントの上述の技術を使用するシステムにおいて、停止運動および再開運動中に多数のロボット１０２、１０６および１１０を同期化させることが関与する。コントローラ１０４は、プログラムヘッダ１２２およびプログラム命令セット１２４およびを含む、中に記憶されたマスター主制御プログラムを有する。プログラムヘッダ１２２は、ロボット１０２を「ファミリーヘッド」として識別する。コントローラ１０８は、プログラム命令セット１２８とプログラムヘッダ１２６を含む、中に記憶されたスレーブ主制御プログラムを有する。プログラムヘッダ１２６は、ロボット１０６を「ファミリーメンバー」として識別する。同様に、コントローラ１１２は、プログラムヘッダ１３０およびプログラム命令セット１３２を含む、中に記憶されたスレーブ主制御プログラムを有する。プログラムヘッダ１３０は、ロボット１１０を「ファミリーメンバー」として識別する。
【００４９】
本発明によるシステム１００は、ガイドルールのセットに従ってアプリケーション処理およびロボット運動を同期化する。例えば、マスターロボット１０２がハンドリングロボットであり、スレーブロボットがスポット溶接機ロボットであると仮定する。マスターロボット１０２は、実際の運動開始時よりも、少なくともネットワーク接続１１４を通したネットワーク通信遅延よりも大きい量だけ前に、運動指令を準備する。マスターロボット１０２は、メモリ領域内に運動指令を記憶する。マスターロボット１０２は、次に目標刻時カウントおよび運動指令をスレーブロボット１０６に対して同報通信する。スレーブロボット１０６は、目標刻時カウントおよび運動指令を受信し、記憶する。マスターロボット１０２は、記憶された運動指令を検索し、目標刻時カウントに到達すると直ちに運動指令を実行する。スレーブロボット１０６は、現シャドウ刻時カウントがマスターロボットにより特定された目標刻時カウントと整合すると直ちにマスターロボット１０２に対する協調的運動を生成するく、記憶された運動指令を検索し使用し始める。スレーブロボット運動は、マスターに対するものであり、スタート目標刻時カウントを使用することによってマスターロボット運動に時間整合される。
【００５０】
本発明によるプロセス同期化は、図４に例示されている。マスターロボット１０２がハンドリングロボットであり、スレーブロボット１０６がスポット溶接機ロボットである例では、該スレーブロボット１０６はマスターロボットがプログラム命令１２８内のステップ１に従って処理位置へと、部品１３４を持ってくるのを待つ。マスターロボットコントローラ１０４は、該部品が所定の位置にあるときスレーブロボットコントローラ１０８に信号を与え、プログラム命令１２４内のステップ１に従って、スレーブロボットが溶接アプリケーションプロセスを終了するのを待つ。スレーブロボット１０６は、アプリケーション処理を実施し、次にスレーブロボットコントローラ１０８はプログラム命令１２８内のステップ２、３および４に従って終了時点でマスターロボットコントローラ１０４に信号を送る。プログラム命令１２４内のステップ２およびプログラム命令１２８内のステップ５は、もう１つのストップ溶接タスクを表わす。このとき両方のロボットは共に、プログラム命令１２４内のステップ３およびプログラム命令１２８内のステップ５で表わされたプログラム内の次のステップへと進む。
【００５１】
保留信号等によってファミリー内のいずれかのロボットの運動が中断されている場合に、ファミリー内の全てのロボットが正確な運動の同期化および協調を達成するためには、全てのロボットが運動を同時に停止することが望ましい。上記で説明されているように、ロボットファミリーが通信ネットワークで動作している場合、１つのコントローラが信号を生成する時刻と別のコントローラがその信号を受信する時刻との間に固有の遅延が存在する。これは、ネットワークが無線であるか、イーサネット（登録商標）であるかまたは２つのプロセッサを接続するバスであるかに関わらず言えることである。かくして、本発明によるガイドルールは、ファミリー内の多数のロボットが同時に運動を停止できるようにする。
【００５２】
図５は、ガイドルールのセットに従ったロボットファミリーの運動停止および再開の同期化のタイミング図である。いずれかのロボットの運動が中断されたときに、ファミリー内のその他のロボット全ては、ネットワーク接続１１４を通して伝送されるメッセージによりその中断について通知される。図５に示すステップ１）では、「ファミリーヘッド」またはマスターロボットコントローラ１０４は、運動中断についてのメッセージを受信する。該メッセージに応答して、マスターロボットコントローラ１０４は、ステップ２）でこれからの運動指令の準備を停止する。このときマスターロボットコントローラ１０４は、減速運動が開始する前に最後の運動指令を表示すべく、ステップ３）で「運動停止イベント」マーカーでメモリ内の最後の運動指令１３６に印を付する。マスターロボットコントローラ１０４は、ステップ４）においてスレーブロボットコントローラ１０８および１１２に対してネットワーク接続１１４上で、印を付された最後の運動指令１３６を送信する。スレーブロボットコントローラ１０８および１１２は、ステップ５）内でＦＩＦＯキューに指令１３６を記憶する。
【００５３】
マスターロボットコントローラ１０４は、ステップ６）で運動指令１３６がマスターロボット１０２の減速を始めるまで、そのキュー内に残っている運動指令を実行する。スレーブロボットコントローラ１０８および１１２もまた、ステップ７）で運動指令１３６がスレーブロボット１０６および１１０の減速を開始するまで、それぞれのキュー内に残っている運動指令を実行する。最も長い減速時間を有するロボットに合わせて、各ロボットの減速速度を制御するように、減速運動指令を生成することができる。かくして、ファミリー内のロボットの全ては、同じ運動減速時間で減速し、全てのロボットコントローラは、後に運動の再開時に使用するため最後の運動指令１３６を記憶しておく。
【００５４】
全てのロボットが完全に停止した後、オペレータは、ロボットのうち１またはそれ以上のものを修理または清掃作業のため停止位置から離れるよう動かすことができる。このときオペレータは、運動開始再開シーケンスのため自動運転でロボットを戻す。もとの経路に沿って走行を再開する前に、全てのロボットが停止位置まで復帰していることが望ましい。図６は、ガイドルールのセットに従ったロボットファミリーの運動開始同期化のタイミング図である。マスターコントローラ１０４は、ステップ１）で共通ネットワークスタート時間を決定する。該スタート時間は、少なくともネットワーク通信遅延時間よりも長いこれからの時間である。マスターコントローラ１０４は、ステップ２）においてＦＩＦＯキュー内に第１の運動指令１３８を記憶するが、マスターロボット１０２の運動を開始しない。運動指令１３８および共通スタート時間は、ステップ３）でスレーブコントローラ１０８および１１２までネットワーク接続１１４を通して伝送される。スレーブコントローラ１０８および１１２は、ステップ４）で、関連するＦＩＦＯキュー内に運動指令を記憶する。
【００５５】
ステップ５）で共通ネットワークスタート時間に到達した場合、ステップ６）でマスターロボットコントローラ１０４は、第１の運動指令１３８をマスターロボット１０２に対して発する。共通ネットワーク時間に応答して、ステップ７）でスレーブロボットコントローラ１０８は、スレーブロボット１０６に対して第１の運動指令１３８を発し、スレーブロボットコントローラ１１２は、スレーブロボット１１０に対して第１の運動指令１３８を発する。その結果、ファミリー内の全てのロボットは、１補間間隔以内で開始するように同期化される。
【００５６】
図７は、ティーチングまたはプロセスセットアップ中の本発明によるロボット１０２および１０６の単一段階の同期化動作を示す。マスターロボット１０２は、経路１４０に沿ってロボットアームの自由端を移動させるためのものであり、一方スレーブロボットは、経路１４２に沿って移動させるためのものである。マスターロボット１０２は、点Ｐ［１］で開始し、経路１４０に沿って連続して点Ｐ［２］、Ｐ［３］およびＰ［４］まで移動する。同様にして、スレーブロボット１０６は点Ｐ［１］で開始し、経路１４２に沿って連続して点Ｐ［２］、Ｐ［３］およびＰ［４］まで移動する。両方のロボットは共に、一方のロボットが制御プログラムの１ラインを実行し終えたときにはいつも、休止または停止することになる。例えば、マスターロボット１０２が経路１４０上の点Ｐ［２］に到達した時点で、スレーブロボット１０６は直ちに経路１４２上で点Ｐ［２］とＰ［３］との間で停止する。スレーブロボット１０６が経路１４２上の点Ｐ［３］に到達した時点で、マスターロボット１０２は直ちに経路１４０上で点Ｐ［２］とＰ［３］の間で停止することになる。
【００５７】
図８は、グループ運動のために多数のロボットを同期化することに関係する本発明によるシステム２００を示す。システム２００は、図３に示すシステム１００からの以降のデバイスである、コントローラ１０４に接続されているロボット１０２と、コントローラ１０８に接続されているロボット１０６と、コントローラ１１２に接続されているロボット１１０と、ネットワーク接続１１４と、ティーチペンダント１１６と、コントローラ１０４に接続されている（現在ファミリーに含まれている）ロボット１２０と、を含む。システム１００に追加されたのは、コントローラ１０８に接続されるファミリーロボット１４４およびコントローラ１１２に接続されるファミリーロボット１４６である。同じく図８に示されているのは、多数のコントローラからの多数のロボット運動の開始および終了時間を同期化するためのガイドルールセットである。
【００５８】
ガイドルールは、同時運動再計画のため各ロボットについて３つの段階を規定する。「ファミリーヘッド」またはマスターロボット１０２に接続されたコントローラ１０４は、ステップ１で同じコントローラ内での多数のグループ運動を計画する。コントローラ１０４はステップ２ａで、全てのファミリーメンバーロボットから計画データを収集し、ステップ２ｂで、運動を再計画し、ファミリーメンバーロボット全てに対し再計画されたデータを返送する。ステップ３では、再計画されたデータは、ロボット１０２および１２０の運動を制御するためコントローラ１０４内で分配される。
【００５９】
スレーブロボット１０６および１４４に接続されたコントローラ１０８は、ステップ１で、同じコントローラ内の多数のグループ運動を計画する。コントローラ１０８はステップ２ａで、コントローラ１０４に計画データを送信する。コントローラ１０８は、ステップ２ｂで、コントローラ１０４からの再計画されたデータを受信する。ステップ３では、再計画されたデータは、ロボット１０６および１４４の運動を制御するためコントローラ１０８内で分配される。同じプロセスは、ロボット１１０および１４６の運動を制御するため、コントローラ１１２によって実施される。
【００６０】
ガイドルールは、外部入力に応答して同期化を提供する。例えば、図２を参照すると、ティーチペンダント１１６は、ロボット１０２、１０６および１１０の各々を教示すべく、単一のティーチペンダント動作で使用可能な外部デバイスである。ティーチペンダント１１６は、コントローラ１０４に接続されるものとして示されているが、コントローラ１０８および１１２のいずれかに接続することもできる。ネットワーク接続１１４は、ティーチペンダント１１６を、ファミリー内の情報（速度オーバーライド、ステップ、保留、リセット、エラー等）の分配、プログラム選択、順方向／逆方向シフト動作、単一段階動作およびスレーブロボットを動作させるための遠隔ログイン／ジョギングのために使用することを可能にする。
【００６１】
要約すると、本発明によるガイドルールは、以下の機能を果す。
１．ファミリー内のロボットを規定する
２．プロセス同期化
３．例外（エラー）を処理する
４．順方向プログラム実行
５．逆方向プログラム実行
６．ライン毎のプログラム同期化
７．動きの同期化
【００６２】
本発明によるシステムおよび方法は、プログラムの実行に適用可能なデータ領域が各プログラムに連携している複数のプログラムで、コンピュータ制御型機械（ロボット）のファミリーのガイド型プログラミングを実施する。データ領域内には、実行すべきプログラムのタイプに従って、プログラムの実行をガイドするガイドルールセットが設定されている。該プログラムは、ロボットが設定されたガイドルールに従って協調的に動作するように実行される。
【００６３】
特許法の規定に従って、本発明はその好ましい実施形態を代表するものとみなされるものを記述してきた。しかしながら、本発明を、その精神または範囲から逸脱することなく、特定的に例示され記述されている以外の形で実施することも可能であるということに留意すべきである。
【符号の説明】
【００６４】
１０    マスターコントローラ
１２，１４    スレーブコントローラ
１６    無線ネットワーク
１８，２０，２２    ロボット
２４    プログラム指令
３０，３２    刻時カウント
３３    シャドウ刻時カウント
３４，３６    データバス
４２，４４    イベント情報
４６，４８    コントローラメモリ
５３，５５    目標刻時カウント
６０，６２    刻時問合せ／調整機能
６４    刻時問合せ応答機能
１００，２００    システム
１０２    マスターロボット
１０４，１０８，１１２    コントローラ
１０６，１１０    スレーブロボット
１１６    ティーチペンダント
１２０    ロボット
１２２，１２６，１３０    プログラムヘッダ
１４４，１４６    ファミリーロボット
【図１】
0005530479.tif 000002
【図２】
0005530479.tif 000003
【図３】
0005530479.tif 000004
【図４】
0005530479.tif 000005
【図５】
0005530479.tif 000006
【図６】
0005530479.tif 000007
【図７】
0005530479.tif 000008
【図８】
0005530479.tif 000009