説明

少なくとも2本のロボットアームの同期化システムおよびその制御方法

【課題】少なくとも2本のロボットアーム相互間の同期化制御を行う。
【解決手段】ロボットマルチアーム制御システムは、製造プロセスを調整すべく、1またはそれ以上のスレーブコントローラに対しマスターコントローラからの同期化情報を伝送するため、ネットワークを介して通信するロボットコントローラを含む。該システムは、プロセスおよび運動の同期化のためイベントタイミングを同期化する場合に、ネットワーク通信の遅延を計算に入れる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、協調的または協同的な運動において多数のロボットを制御するための装置およびシステムに関する。
【0002】
関連出題の相互参照
本出願は、2005年5月6日付けの米国仮特許出願第60/679,919号の利益を請求するものである。
【0003】
本発明はまた、ネットワーク内で接続された電子コントローラが発出する指令のタイミングを協調させることに関する。より特定的には、本発明は、少なくとも1つの他のコントローラによって生成された指令と同期化されるコントローラからの指令に応えて、ロボットアームといったようなアクチュエータが実施する活動またはイベントに関する。
【背景技術】
【0004】
ロボットシステムがさらに高度なものになっていくにつれて、多数のロボットが、与えられたタスクについて一緒に作業する必要が出てくる。例えば、あるロボットが動作を実施する予定の被加工品を、もう1つのロボットが保持している場合、そのタスクを効率良く完逐すべく、双方のロボットの動きが正確に協調されなくてはならない。
【0005】
ロボットマニピュレータの密な協調を達成するための従来の方法は、それらを同一のコントローラのハードウェアに接続することである。この技術は、運動軸または自由度の数が限られている場合に、適用可能である。ロボット製造業者にとっては、ロボットマニピュレータおよびサーボシステムのグループの考えられる組合せおよび順列を全て提供するのは困難である。
【発明の概要】
【発明が解決しようとする課題】
【0006】
これらの欠点を克服するため、多数のコントローラを用いて、ロボットマニピュレータのマルチアームシステムを制御することができる。システム内の各コントローラおよびマニピュレータは、汎用品で良く、システム内のロボットの数は、ネットワーク化されたコントローラの融通性のため非常に多くなる。しかし、各コントローラは、独立したタイミングシステムを必要とし、このことが、このアプローチの主たる欠点である。マルチロボットシステムの能力を完全に利用するためには、共通の時間基準が好まれる。
【0007】
ある先行技術システムは、ハードウェアの使用を通して共通のタイミングを提供するが、これは、全てのロボットコントローラのクロックを相互接続する必要のある技術である。IEEE−1588プロトコルにて実施されたこのようなハードウェア機構の1つは、ハードウェア内の共通タイミングを提供するために特定の機構を利用している。先行技術におけるもう1つの機構には、きわめて精密なクロック回路が含まれている。これらの各々に必要とされるハードウェアは、専門化され高価なものである。
【0008】
通信ネットワークにより相互接続された電子コントローラ間において、数マイクロセカンド未満の正確度をもつタイミングを協調させるために、ハードウェアを使用することが可能であるが、そのような正確度は、産業ロボットを制御するためのシステムにおいては必要でない。
【0009】
本発明は、標準的な多目的通信ネットワークを介して、ソフトウェア内のコントローラ間の共通タイミング情報を提供する。特別なハードウェアは1つも必要とはされない。各コントローラ上のクロックは正確である必要はなく、他のコントローラ上のクロックとも独立した形で作動することができる。スレーブまたはシャドウコントローラが、マスターコントローラと通信して、スレーブコントローラ上のシャドウ刻時(tick)カウントを更新するのに用いられるタイミング補正を周期的に判定する。この技術により、ネットワーク化されたコントローラがそれぞれ生成するイベント指令信号を相互に数ミリセカンド内に同期化することが可能となる。
【0010】
本発明による方法およびシステムは、ロボットのコントローラおよび電子指令信号に応答する他のアクチュエータおよびマニピュレータに適用することができる。
【課題を解決するための手段】
【0011】
本発明による方法は、通信ネットワークにより相互接続されたコントローラシステム内でイベントの発生を同期化する。該方法は、マスターコントローラおよびスレーブコントローラ上において、各該コントローラ上で1つのクロックにより生成した刻時カウントを維持する段階を含む。これからのイベントが発生すべき目標刻時カウントが確立される。スレーブコントローラは、マスターコントローラ上の現刻時カウントについての問合せをマスターコントローラに対し反復的に送信し、マスターコントローラは、自らの上の現刻時カウントをもってスレーブコントローラに応答する。マスターコントローラから伝送された現刻時カウントおよび問合せ−応答伝送周期の長さに基づいて、スレーブコントローラ上のシャドウ刻時カウントが確立され、スレーブコントローラ上のクロック刻時だけ増分される。マスターコントローラは、自らの上の目標刻時カウントの発生時点でイベントを指令し、スレーブコントローラは、シャドウ刻時カウントが目標刻時カウントと整合する場合にイベントを指令する。
【0012】
本発明は、ロボットおよびその他のマニピュレータおよびデバイスを含む、コンピュータ制御された機械のガイド型(guided)プログラミング方法に関する。該プログラミング方法は、プログラムの実行の挙動を支配するガイドルール(guide rule)を含む。プログラムは、機械の運動を制御することができる。プログラムはまた、運動が関与するかまたは関与しない可能性のあるアプリケーションプロセスも制御することもできる。アプリケーションは、タスクを完成させるのに必要とされるプロセスに関係する一般的な用語である。アプリケーションは、そのタスクの実行中に運動が関与してもしなくてもよい。
【0013】
ガイドルールは、時間ベースの同期化を規定することができる。何度も所望される同期化は、システム内の全てのロボットおよびプロセスが準備完了状態にある最も早い時間である。ガイドルールは、共通時間に対するスタート時間をファミリーヘッドが通信するものと規定することができる。こうして、通信遅延の予測が可能となる。
【0014】
本発明による上記ガイドルールは、以下の機能、1)ファミリー内の各ロボットを規定、2)プロセス同期化、3)例外(エラー)を処理、4)順方向プログラム実行、5)逆方向プログラム実行、6)ライン毎のプログラム同期化、および7)動きの同期化、を実施する。
【0015】
本発明の以上のならびにその他の利点は、添付図面と照らし合わせて考慮した場合に、以下の好ましい実施形態の詳細な説明から、当業者には容易に明らかとなるであろう。
【図面の簡単な説明】
【0016】
【図1】本発明を適用できるマルチロボットシステムの全体的概略図である。
【図2】図1のマスターコントローラおよび1つのスレーブコントローラの概略的ブロック図である。
【図3】本発明に従って動作するマルチロボットシステムを示す図である。
【図4】図3に示すシステムのマスターロボットとスレーブロボットの1つとの間のプロセス同期化を示す図である。
【図5】図3中に示すロボットシステムの停止および再開の同期化を行うタイミング図である。
【図6】図3に示すロボットシステムの運動開始同期化のタイミング図である。
【図7】図3に示すマスターロボットおよび1つのスレーブロボットの単一段階動作を例示する図である。
【図8】多数のグループの運動のための図1に示すマルチロボットシステムの代替的実施形態の概略図である。
【発明を実施するための形態】
【0017】
2005年5月6日に提出された米国仮特許出願番号第60/679,919号は、本発明の全体に亘って取り入れている。
【0018】
本発明は、2005年3月1日に出願され、本発明の全体に亘って参考として取り入れている同時係属米国特許出願番号第11/069,126号内に記述された通信ネットワークにより相互接続されたコントローラのシステム内のイベント発生を同期化する方法を利用している。図1を参照すると、システムは、無線ネットワーク、光ネットワークまたは有線ネットワーク等である通信ネットワーク16によって相互接続された、ある数「N」個のロボットコントローラ10、12、14を含む。コントローラ10はマスターコントローラであり、コントローラ12、14はシャドウコントローラである。図1は、各ロボットコントローラ10、12、14が、各ロボット18、20、22とそれぞれ通信するシステムを例示するものの、各コントローラは複数のロボットと通信してもよい。それぞれのコントローラと連携したロボットの動きは、好ましくは各コントローラから反復的に発出し、関連するロボットへと送信される電子信号の指令により制御される。システムは、その各ロボットが、それぞれのコントローラから実質的に同時に指令を受信し、かくして各ロボットの動きが該システムの他のロボットの動きと同期化され協調させられるように、各コントローラ10、12、14からの指令の発出を協調させる。
【0019】
この方法は、ロボットシステムに関して論述されているが、その各々が少なくとも1つのこのようなアクチュエータを制御する多数のコントローラから発せられる指令に対して同期的に応答して、実質的に同時に反応するその他の種類のアクチュエータの制御にも適用可能である。
【0020】
各コントローラ10、12、14は、ロボット指令を生成する指令機能24、26、28を有する。指令機能24、26、28は互いに独立しており、各コントローラの制御下にあるロボットに対し特定の場所へ移動するように命令するといった指令シーケンスであるロボット制御プログラムを実行する。それらのそれぞれの指令に応答したロボットの動きは、イベントと呼ばれる。
【0021】
各ロボットは、コントローラからの指令に応えて電動機によって駆動されたときに回転する連接継手により連結された複数の分割されたセグメント上に端部が支持されたアームを有する。継手の連接は、ロボットアームの端部を所定の場所に移動させる。往々にしてロボット制御プログラムは、グリッパまたはプロセス機器といったようなロボットアームに取付けられた追加設備に指令を与える。塗料吹き付け器、アーク溶接器等といったプロセス機器の場合、ロボットの運動とプロセスは密に結合されている。例えば、塗料吹き付け器は、移動するロボットアームが塗装すべき被加工品に隣接する所定の場所にあるまさにそのときに塗料を吹き付けるように起動されなくてはならない。
【実施例】
【0022】
図2は、マスターコントローラ10および1つのシャドウコントローラ12の詳細を例示しているが、該システムは任意数のシャドウコントローラを含むことができ、該方法はこれに適用される。アクチュエータ指令の正確なタイミングを容易にするため、各コントローラ内に常駐する符号化されたコンピュータ読取り可能ソフトウェアが、データバス34、36により水晶クロック38、40に結合された刻時カウント30、32を提供する。各カウンタ30、32は、ほぼ数ミリセカンド毎の間隔でそれぞれのクロック38、40によって生成される刻時または信号のカウントを維持する。各コントローラ10および12の指令に応答して発生するイベントは全て、各コントローラ上の刻時カウントまたはシャドウ刻時カウントに基づいて同期化される。
【0023】
各刻時カウンタ30、32は、その刻時カウンタ30内の特定のカウントの発生時にマスターコントローラ10により実行されるべきイベントおよびそのシャドウ刻時カウンタ32内での特定のカウントの発生時に、シャドウコントローラ12によって実行されるべきイベントに関するイベント情報をタグ付けすべく、ロボット指令システムによって使用される整数を提供する。次のイベントにおいてロボットアームが移動すべき場所を含み得るイベント情報42、44が、コントローラメモリ46、48の中にある。関連するイベントに対応する目標刻時でタグ付けされたイベント情報が、対応するコントローラメモリ46、48内の50、52に存在する。
【0024】
ロボット指令機能24、26は、これからのイベントが発生することになる目標刻時カウント53、55を予想することができる。イベント情報44は、そのイベントが発生する前に、通信ネットワーク16を介してスレーブコントローラ12に通信される。標準的通信ネットワークは、20ミリセカンドを超え得る待ち時間を有することから、イベントの前にイベント情報の準備が必要である。イベントのための準備により、全てのコントローラは、カウンタが各目標刻時に到達する前に、イベント情報をタグ付けさせ、目標刻時カウントにおいてトリガーする準備ができた状態にさせることができる。
【0025】
図1に示すように、マスターコントローラ10は刻時マスター機能54を含み、スレーブコントローラ12、14は各々、刻時シャドウ機能56、58を含む。これらの機能54、56、58は、スレーブコントローラ上の刻時カウント32がマスターコントローラ上の刻時カウント30と同じになるようにする。ロボットおよびプロセス動作を各コントローラにおいて同期化させる必要がある場合、基準刻時カウントは、イベントが確実に各コントローラ上で同じ刻時カウントで発生するようにする。
【0026】
刻時予測ソフトウェアは、システム中のイベントが発生することになる目標刻時カウントを反復的に決定する。それは、システム中のイベントの各々についてイベント情報およびデータを生成し、その情報およびデータにそれぞれの目標刻時カウントでタグ付けする。このデータは全てのコントローラに通信され、そこで各目標刻時カウントが発生するまで保持される。現刻時カウントがひとたび目標刻時カウントと整合すると、イベントはトリガーし、同じ刻時において全てのコントローラロボット上で、タグ付けされた情報およびデータが実行される。
【0027】
スレーブコントローラ12、14は各々、ネットワーク16上のメッセージを、マスターコントローラ10上の刻時問合せ応答機能64に送信する刻時問合せ機能60、62を提供する。現刻時カウントについてのスレーブコントローラからの問合せに応答して、マスターコントローラ10は、スレーブコントローラ12、14に対しマスター刻時カウント30の現行値を送信する。
【0028】
問合せ機能60、62は、問合せがそれぞれのスレーブコントローラから送信された正確な時刻と、応答がそれぞれのスレーブコントローラで受信された正確な時刻とを用いて、問合せの送信で始まり応答の受信で終わる伝送周期の長さを計算する。その伝送周期が予め定められた周期より長い場合、応答の刻時カウントは無視され、新しい問合せが直ちに送信される。各スレーブコントローラで受信されたマスター刻時カウントおよび伝送周期の長さに基づき、各スレーブコントローラについてのシャドウ刻時カウント調整が、マスター刻時カウントとスレーブ刻時カウントとの間の差に該伝送周期の長さの半分を加えたものとして、計算される。この補正または調整は、各スレーブコントローラ上のシャドウ刻時カウント33を決定すべく、各スレーブコントローラ12、14上の現刻時カウント32に適用される。シャドウ刻時カウント33はその後、スレーブコントローラ12上のクロック40により生成された各刻時だけ増分される。
【0029】
コントローラ10、12、14の同期化を維持するために、各コントローラ上の刻時カウント30、32は自立的に更新を続け、現行のそれぞれの調整のために調整されたシャドウ刻時カウント33は、スレーブコントローラ12、14上で自立的に更新を行う。マスターコントローラ10上の目標刻時カウント53に到達する前に、目標刻時カウントに対応するイベント指令情報42はプログラム指令24の中で識別され、50で次の目標刻時カウントでタグ付けされているはずである。マスターコントローラ10上のタグ付けされたイベント指令情報42は、到達すべき次の目標刻時カウントに備えてメモリ46内に保持される。72で刻時カウント30および目標刻時カウント53が整合した場合に、マスターコントローラ10は、目標刻時カウント53に対応するタグ付けされたイベント指令情報42の実行74を指令する。
【0030】
同様にして、各スレーブコントローラ12、14上のそれぞれの目標シャドウ刻時カウントに到達する前に、それぞれの目標シャドウ刻時カウントに対応するイベント指令情報44はプログラム指令26内で識別され、52においてそれぞれの目標シャドウ刻時カウントでタグ付けされているはずである。各スレーブコントローラ12、14上のタグ付けされたイベント指令情報44は、到達すべき目標シャドウ刻時カウントに備えてメモリ48内に保持される。76でスレーブコントローラ12上の目標刻時カウント55とシャドウ刻時カウント33とが整合したとき、スレーブコントローラ12は、目標刻時カウント55に対応するタグ付けされたイベント指令情報44の実行78を指令する。
【0031】
コントローラ10、12、14上のクロック38、40内の電子水晶発振器は正確ではない。標準で低価格のハードウェアシステムは、50000分の1未満の正確度しかもたないことから、時が経つと刻時シャドウカウント33はマスター刻時カウント30とに対してドリフトすることになる。このドリフトに対処するために、刻時カウント問合せが周期的にマスターコントローラ10に送信される。刻時シャドウ機能56、58は、このクロックドリフトに対処すべく、増分的に刻時シャドウカウント33を調整することができる。
【0032】
クロックドリフトはある程度一定の割合で続くことから、刻時カウントの調整は規則的な間隔で起こる。標準的な実装においては、スレーブコントローラ12、14上の刻時カウント33は、約2分の動作毎に1刻時カウントにより調整され得る。スレーブコントローラ12、14上の刻時問合せ/調整機能60、62は、刻時カウント調整およびアクセス履歴データを監視して、調整から調整までの平均時間および最後の調整が行われてからの動作周期の長さを決定する。この情報から、スレーブコントローラ12、14は次の刻時カウント調整が必要とされることになる時刻を推定する。スレーブコントローラからの刻時カウント問合せは、その時点でマスターコントローラに送信される。
【0033】
この推定値は、必要とされる調整の大きさに加え刻時の位相を計算するために使用される。刻時カウント30が変化する瞬間に刻時整合72が起こり、刻時カウント32が変化する瞬間に刻時整合76が起こる。コントローラは全て独立した刻時カウント30、32を有することから、マスターコントローラ10上の刻時カウント30およびスレーブコントローラ12、14上のシャドウ刻時カウント33は同時には増分しない。この位相ずれ増分は、それぞれのコントローラ上でイベントがトリガーしたときにプラスまたはマイナス1刻時の誤差をひき起こす可能性がある。最良の場合には、2つのコントローラ上の刻時は正確に同じ瞬間で増分し、誤差ゼロであり、刻時は「同相」であると言われる。最悪の場合には、スレーブコントローラ上の刻時は、マスターコントローラ上の刻時の直前または直後に増分し、1刻時の誤差を招く。この方法を使用するシステムは、位相誤差を2分の1刻時以下に低減すべく、クロックドリフトを監視する。
【0034】
この方法は、イーサネット(登録商標)といったような標準で低価格のネットワークが有する非決定性に取り組んでいる。各刻時カウント毎に刻時問合せを実施するのは非実用的である。例えば、刻時カウントは2ミリセカンド毎に増分し得るが、標準的通信ネットワーク上で1つのメッセージのみを送信するのに20ミリセカンドもかかる可能性がある。
【0035】
本発明は、ロボットおよびその他のマニピュレータおよびデバイスを含むコンピュータ制御された機械のガイド型プログラミング方法に関する。該プログラミング方法は、プログラムの実行の挙動を支配するガイドルールを含む。プログラムは機械の運動を制御することができる。プログラムはまた、運動が関与するまたは関与しない可能性のあるアプリケーションを制御することもできる。アプリケーションは、タスクを完成させるのに必要とされるプロセスに関係する一般的な用語である。アプリケーションプロセスには、そのタスクの実行中に運動が関与してもしなくてもよい。アプリケーションプロセスの例としては、スポット溶接、アーク溶接、塗装、送り出し、研磨、研摩、マテリアル・ハンドリング、レーザ切断および溶接が含まれる。アプリケーションプロセスは、機械と外部オブジェクトまたはタスクとの間の相互作用が存在するあらゆるプロセスを含むことができる。
【0036】
異なるガイドルールを、異なるタイプのプログラムに適用することができる。例えば、スポット溶接プログラムは、アーク溶接プログラム以外の運動およびプロセスの同期を支配する異なるルールを有し得る。アプリケーションプロセスは、ウィービングまたはサーボガン作動といったプロセスに関連する運動を含むことができる。
【0037】
ガイドルールは、ロボットファミリーを含むロボット群の間の相互作用を支配し得る。ロボットファミリーは、ファミリーヘッドと称される1つのロボットと、ファミリーメンバーと称される残りのロボットとを有する。全てのファミリーメンバーは、ファミリーヘッドと通信し、ファミリーヘッドは全てのファミリーメンバーと通信できる。単一のプログラムは、多数のロボットを含み得るが、プログラム内の1つのロボットのみがファミリーメンバーと称される。
【0038】
ガイドルールはプログラムの実行をガイドし、各プログラムと連携している。ガイドルールは、プログラムヘッダに付随するデータ領域内に記憶されるか、またはプログラム自体に付属させるか、またはプログラムの外部に記憶される。多数のルールによりガイドルールセットを構成する。サブプログラムは、呼出しプログラムのルールを利用するか、または呼出しプログラムのルールに加えてまたはこれらの代わりに適用可能である独自のルールセットを有することができる。
【0039】
ロボットファミリー内の異なるプログラムは、異なるガイドルールのセットを有することができる。ガイドルールは、ロボット運動の同期化をガイドすることができる。ロボット間の通信は、コンピュータネットワーク上、コンピュータバス上で、デジタルI/Oを通して、またはコンピュータ間の情報の移行を可能にするその他のあらゆる手段を通して行い得る。
【0040】
ルールは、同時にロボットファミリーの全てのメンバーが運動を開始することを要求できる。もう1つのルールは、その運動が同時に開始し、同時に終了することを要求できる。その他のルールは、位置および速度が、1またはそれ以上のその他のロボットにより担持されている部品との関係におけるものとなるように、ロボット運動が協調させられているか否かを判定することができる。
【0041】
その他のルールは、多数のロボットをその他のロボットの運動に対して同期化させる方法を設定し得る。例えば、アーク溶接用ロボットは、いずれかのロボットがプロセスを開始する前に全てのロボットが所定の位置にあることを必要とするかもしれない。こうして、アーク溶接の関連部分についての重要な重力が維持される。一方、スポット溶接用ロボットは、他の溶接用ロボットの状態とは無関係にロボットがプロセスを開始できるようにするかもしれない。スポット溶接用ロボットでは、いずれのハンドリング用ロボットもスポット溶接の実行中停止させられることを必要とするかもしれない。
【0042】
ガイドルールは、ファミリー間のプログラムのライン毎の順方向または逆方向実行を同期化できる。ガイドルールは、ロボットファミリーのうちのどのロボットがプログラムを実行することになるかを決定できる。ガイドルールは、プロセスのライン毎の実行の挙動を決定する。
【0043】
ルールは、ユーザがティーチペンダント上の順方向ステップまたは逆方向ステップキーを押すことといった、外部入力に基づいて挙動を規定することができる。外部入力はe−ストップ、ティーチペンダント有効化、デッドマンスイッチ、フェンス等といった安全信号に由来するものであり得る。外部入力はまた、センサの出力または外部デバイスに由来する可能性もある。
【0044】
ガイドルールは、運動またはプロセスが実行中に停止された場合の挙動を規定できる。停止条件は、外部入力またはプログラム条件から開始され得る。停止シーケンスは、減速運動開始の同期化も含むことができる。それは、減速の終りの同期化を含む可能性がある。この同期化は、運動を停止させる条件の処理前、処理の間および処理後に、ロボットファミリーが空間的関係を維持できるようにすることができる。
【0045】
ガイドルールは、運動またはプロセスがまず、停止された後に再開させられる場合の挙動を規定することができる。再開シーケンスは、運動が停止した位置に全てのロボットが復帰することが含まれ得る。ルールは、運動が停止した位置よりプログラム経路に沿って幾分かの距離だけ前にある位置まで復帰することを規定できる。ルールは、公称経路に沿った運動およびプロセスの再開を同期化することを規定できる。ルールは、公称運動の実行中のプロセスの再開に備えた停止位置までの運動中のプロセスシーケンスの再開を規定することができる。
【0046】
ガイドルールは、時間ベースの同期化を規定することができる。何度も所望される同期化は、システム内の全てのロボットおよびプロセスが準備完了状態にある最も早い時間である。ガイドルールは、共通時間に対するスタート時間をファミリーヘッドが通信するものと規定することができる。こうして、通信遅延の予測が可能となる。ファミリーヘッドからの通信は、周期的間隔で発生し得る。各通信は、先行する通信からのデータの一部分を含むことができる。こうして、失われたデータを後続する通信から回復できることから、システムの性能を変えることなく、時々生ずる通信データの喪失または遅延を考慮に入れることになる。
【0047】
図3には、停止運動および再開運動の間およびロボット運動が中断された後のマルチロボットの同期化が関与する本発明によるシステム100が示されている。該システム100は、コントローラ104に接続された「ファミリーヘッド」つまりマスターロボット102と、コントローラ108に接続された第1の「ファミリーメンバー」またはスレーブロボット106と、コントローラ112に接続された第2の「ファミリーメンバー」またはスレーブロボット110と、を含む。コントローラ104、108および112は、ネットワーク接続114といったデータ交換手段を介して通信状態にある。2つのスレーブロボット106および110は例示を目的としたものにすぎず、ファミリーは、1またはそれ以上の「ファミリーメンバー」ロボットを有し得る。また、マスターコントローラ104に接続されているものとして示されているのは、ティーチペンダント116、プログラマブル・ロジック・コントローラ(PLC)118および「ファミリーメンバー」でないロボット120である。
【0048】
本発明には、ロボット運動の中断が発生する前の正常な運動実行中に、多数のロボット運動を同期化するための目標刻時カウントの上述の技術を使用するシステムにおいて、停止運動および再開運動中に多数のロボット102、106および110を同期化させることが関与する。コントローラ104は、プログラムヘッダ122およびプログラム命令セット124およびを含む、中に記憶されたマスター主制御プログラムを有する。プログラムヘッダ122は、ロボット102を「ファミリーヘッド」として識別する。コントローラ108は、プログラム命令セット128とプログラムヘッダ126を含む、中に記憶されたスレーブ主制御プログラムを有する。プログラムヘッダ126は、ロボット106を「ファミリーメンバー」として識別する。同様に、コントローラ112は、プログラムヘッダ130およびプログラム命令セット132を含む、中に記憶されたスレーブ主制御プログラムを有する。プログラムヘッダ130は、ロボット110を「ファミリーメンバー」として識別する。
【0049】
本発明によるシステム100は、ガイドルールのセットに従ってアプリケーション処理およびロボット運動を同期化する。例えば、マスターロボット102がハンドリングロボットであり、スレーブロボットがスポット溶接機ロボットであると仮定する。マスターロボット102は、実際の運動開始時よりも、少なくともネットワーク接続114を通したネットワーク通信遅延よりも大きい量だけ前に、運動指令を準備する。マスターロボット102は、メモリ領域内に運動指令を記憶する。マスターロボット102は、次に目標刻時カウントおよび運動指令をスレーブロボット106に対して同報通信する。スレーブロボット106は、目標刻時カウントおよび運動指令を受信し、記憶する。マスターロボット102は、記憶された運動指令を検索し、目標刻時カウントに到達すると直ちに運動指令を実行する。スレーブロボット106は、現シャドウ刻時カウントがマスターロボットにより特定された目標刻時カウントと整合すると直ちにマスターロボット102に対する協調的運動を生成するく、記憶された運動指令を検索し使用し始める。スレーブロボット運動は、マスターに対するものであり、スタート目標刻時カウントを使用することによってマスターロボット運動に時間整合される。
【0050】
本発明によるプロセス同期化は、図4に例示されている。マスターロボット102がハンドリングロボットであり、スレーブロボット106がスポット溶接機ロボットである例では、該スレーブロボット106はマスターロボットがプログラム命令128内のステップ1に従って処理位置へと、部品134を持ってくるのを待つ。マスターロボットコントローラ104は、該部品が所定の位置にあるときスレーブロボットコントローラ108に信号を与え、プログラム命令124内のステップ1に従って、スレーブロボットが溶接アプリケーションプロセスを終了するのを待つ。スレーブロボット106は、アプリケーション処理を実施し、次にスレーブロボットコントローラ108はプログラム命令128内のステップ2、3および4に従って終了時点でマスターロボットコントローラ104に信号を送る。プログラム命令124内のステップ2およびプログラム命令128内のステップ5は、もう1つのストップ溶接タスクを表わす。このとき両方のロボットは共に、プログラム命令124内のステップ3およびプログラム命令128内のステップ5で表わされたプログラム内の次のステップへと進む。
【0051】
保留信号等によってファミリー内のいずれかのロボットの運動が中断されている場合に、ファミリー内の全てのロボットが正確な運動の同期化および協調を達成するためには、全てのロボットが運動を同時に停止することが望ましい。上記で説明されているように、ロボットファミリーが通信ネットワークで動作している場合、1つのコントローラが信号を生成する時刻と別のコントローラがその信号を受信する時刻との間に固有の遅延が存在する。これは、ネットワークが無線であるか、イーサネット(登録商標)であるかまたは2つのプロセッサを接続するバスであるかに関わらず言えることである。かくして、本発明によるガイドルールは、ファミリー内の多数のロボットが同時に運動を停止できるようにする。
【0052】
図5は、ガイドルールのセットに従ったロボットファミリーの運動停止および再開の同期化のタイミング図である。いずれかのロボットの運動が中断されたときに、ファミリー内のその他のロボット全ては、ネットワーク接続114を通して伝送されるメッセージによりその中断について通知される。図5に示すステップ1)では、「ファミリーヘッド」またはマスターロボットコントローラ104は、運動中断についてのメッセージを受信する。該メッセージに応答して、マスターロボットコントローラ104は、ステップ2)でこれからの運動指令の準備を停止する。このときマスターロボットコントローラ104は、減速運動が開始する前に最後の運動指令を表示すべく、ステップ3)で「運動停止イベント」マーカーでメモリ内の最後の運動指令136に印を付する。マスターロボットコントローラ104は、ステップ4)においてスレーブロボットコントローラ108および112に対してネットワーク接続114上で、印を付された最後の運動指令136を送信する。スレーブロボットコントローラ108および112は、ステップ5)内でFIFOキューに指令136を記憶する。
【0053】
マスターロボットコントローラ104は、ステップ6)で運動指令136がマスターロボット102の減速を始めるまで、そのキュー内に残っている運動指令を実行する。スレーブロボットコントローラ108および112もまた、ステップ7)で運動指令136がスレーブロボット106および110の減速を開始するまで、それぞれのキュー内に残っている運動指令を実行する。最も長い減速時間を有するロボットに合わせて、各ロボットの減速速度を制御するように、減速運動指令を生成することができる。かくして、ファミリー内のロボットの全ては、同じ運動減速時間で減速し、全てのロボットコントローラは、後に運動の再開時に使用するため最後の運動指令136を記憶しておく。
【0054】
全てのロボットが完全に停止した後、オペレータは、ロボットのうち1またはそれ以上のものを修理または清掃作業のため停止位置から離れるよう動かすことができる。このときオペレータは、運動開始再開シーケンスのため自動運転でロボットを戻す。もとの経路に沿って走行を再開する前に、全てのロボットが停止位置まで復帰していることが望ましい。図6は、ガイドルールのセットに従ったロボットファミリーの運動開始同期化のタイミング図である。マスターコントローラ104は、ステップ1)で共通ネットワークスタート時間を決定する。該スタート時間は、少なくともネットワーク通信遅延時間よりも長いこれからの時間である。マスターコントローラ104は、ステップ2)においてFIFOキュー内に第1の運動指令138を記憶するが、マスターロボット102の運動を開始しない。運動指令138および共通スタート時間は、ステップ3)でスレーブコントローラ108および112までネットワーク接続114を通して伝送される。スレーブコントローラ108および112は、ステップ4)で、関連するFIFOキュー内に運動指令を記憶する。
【0055】
ステップ5)で共通ネットワークスタート時間に到達した場合、ステップ6)でマスターロボットコントローラ104は、第1の運動指令138をマスターロボット102に対して発する。共通ネットワーク時間に応答して、ステップ7)でスレーブロボットコントローラ108は、スレーブロボット106に対して第1の運動指令138を発し、スレーブロボットコントローラ112は、スレーブロボット110に対して第1の運動指令138を発する。その結果、ファミリー内の全てのロボットは、1補間間隔以内で開始するように同期化される。
【0056】
図7は、ティーチングまたはプロセスセットアップ中の本発明によるロボット102および106の単一段階の同期化動作を示す。マスターロボット102は、経路140に沿ってロボットアームの自由端を移動させるためのものであり、一方スレーブロボットは、経路142に沿って移動させるためのものである。マスターロボット102は、点P[1]で開始し、経路140に沿って連続して点P[2]、P[3]およびP[4]まで移動する。同様にして、スレーブロボット106は点P[1]で開始し、経路142に沿って連続して点P[2]、P[3]およびP[4]まで移動する。両方のロボットは共に、一方のロボットが制御プログラムの1ラインを実行し終えたときにはいつも、休止または停止することになる。例えば、マスターロボット102が経路140上の点P[2]に到達した時点で、スレーブロボット106は直ちに経路142上で点P[2]とP[3]との間で停止する。スレーブロボット106が経路142上の点P[3]に到達した時点で、マスターロボット102は直ちに経路140上で点P[2]とP[3]の間で停止することになる。
【0057】
図8は、グループ運動のために多数のロボットを同期化することに関係する本発明によるシステム200を示す。システム200は、図3に示すシステム100からの以降のデバイスである、コントローラ104に接続されているロボット102と、コントローラ108に接続されているロボット106と、コントローラ112に接続されているロボット110と、ネットワーク接続114と、ティーチペンダント116と、コントローラ104に接続されている(現在ファミリーに含まれている)ロボット120と、を含む。システム100に追加されたのは、コントローラ108に接続されるファミリーロボット144およびコントローラ112に接続されるファミリーロボット146である。同じく図8に示されているのは、多数のコントローラからの多数のロボット運動の開始および終了時間を同期化するためのガイドルールセットである。
【0058】
ガイドルールは、同時運動再計画のため各ロボットについて3つの段階を規定する。「ファミリーヘッド」またはマスターロボット102に接続されたコントローラ104は、ステップ1で同じコントローラ内での多数のグループ運動を計画する。コントローラ104はステップ2aで、全てのファミリーメンバーロボットから計画データを収集し、ステップ2bで、運動を再計画し、ファミリーメンバーロボット全てに対し再計画されたデータを返送する。ステップ3では、再計画されたデータは、ロボット102および120の運動を制御するためコントローラ104内で分配される。
【0059】
スレーブロボット106および144に接続されたコントローラ108は、ステップ1で、同じコントローラ内の多数のグループ運動を計画する。コントローラ108はステップ2aで、コントローラ104に計画データを送信する。コントローラ108は、ステップ2bで、コントローラ104からの再計画されたデータを受信する。ステップ3では、再計画されたデータは、ロボット106および144の運動を制御するためコントローラ108内で分配される。同じプロセスは、ロボット110および146の運動を制御するため、コントローラ112によって実施される。
【0060】
ガイドルールは、外部入力に応答して同期化を提供する。例えば、図2を参照すると、ティーチペンダント116は、ロボット102、106および110の各々を教示すべく、単一のティーチペンダント動作で使用可能な外部デバイスである。ティーチペンダント116は、コントローラ104に接続されるものとして示されているが、コントローラ108および112のいずれかに接続することもできる。ネットワーク接続114は、ティーチペンダント116を、ファミリー内の情報(速度オーバーライド、ステップ、保留、リセット、エラー等)の分配、プログラム選択、順方向/逆方向シフト動作、単一段階動作およびスレーブロボットを動作させるための遠隔ログイン/ジョギングのために使用することを可能にする。
【0061】
要約すると、本発明によるガイドルールは、以下の機能を果す。
1.ファミリー内のロボットを規定する
2.プロセス同期化
3.例外(エラー)を処理する
4.順方向プログラム実行
5.逆方向プログラム実行
6.ライン毎のプログラム同期化
7.動きの同期化
【0062】
本発明によるシステムおよび方法は、プログラムの実行に適用可能なデータ領域が各プログラムに連携している複数のプログラムで、コンピュータ制御型機械(ロボット)のファミリーのガイド型プログラミングを実施する。データ領域内には、実行すべきプログラムのタイプに従って、プログラムの実行をガイドするガイドルールセットが設定されている。該プログラムは、ロボットが設定されたガイドルールに従って協調的に動作するように実行される。
【0063】
特許法の規定に従って、本発明はその好ましい実施形態を代表するものとみなされるものを記述してきた。しかしながら、本発明を、その精神または範囲から逸脱することなく、特定的に例示され記述されている以外の形で実施することも可能であるということに留意すべきである。
【符号の説明】
【0064】
10 マスターコントローラ
12,14 スレーブコントローラ
16 無線ネットワーク
18,20,22 ロボット
24 プログラム指令
30,32 刻時カウント
33 シャドウ刻時カウント
34,36 データバス
42,44 イベント情報
46,48 コントローラメモリ
53,55 目標刻時カウント
60,62 刻時問合せ/調整機能
64 刻時問合せ応答機能
100,200 システム
102 マスターロボット
104,108,112 コントローラ
106,110 スレーブロボット
116 ティーチペンダント
120 ロボット
122,126,130 プログラムヘッダ
144,146 ファミリーロボット

【特許請求の範囲】
【請求項1】
第1のロボットファミリー情報が記憶されているデータ領域を有し、第1のコントローラに接続される第1のロボットアームと
第2のロボットファミリー情報が記憶されているデータ領域を有し、第2のコントローラに接続される第2のロボットアームと、
信号を伝送するための、前記第1および第2のコントローラ間のネットワーク接続と、
それぞれ前記第1および第2のロボットアームの協調的動作のために実行されるべきプログラム命令を各々含む、前記第1のコントローラ内に記憶されたマスター主プログラムおよび前記第2のコントローラ内に記憶されたスレーブ主プログラムと、
を含んでなり、前記第1のロボットファミリー情報および前記第2のロボットファミリー情報は、ロボットファミリーのメンバーとして前記第1および第2のロボットアームを識別する、少なくとも2本のロボットアームの同期化システム。
【請求項2】
前記第1のロボットファリミリー情報が、前記マスター主プログラムのヘッダであり、前記第2のロボットファリミリー情報が前記スレーブ主プログラムのヘッダである請求項1に記載のシステム。
【請求項3】
前記第1のコントローラからマスターティックカウントを生成するための手段と、前記第2のコントローラからシャドウティックカウントを生成するための手段とを含み、前記シャドウティックカウントが前記ネットワーク接続を通した信号伝送遅延について調整された前記マスターティックカウントを表わし、ここで前記第1のコントローラおよび前記第2のコントローラが、前記マスターティックカウントおよび前記シャドウティックカウントと協調して前記プログラム命令を実行する請求項1に記載のシステム。
【請求項4】
前記第1および第2のコントローラのうちの少なくとも1つのコントローラ中に記憶されたガイドルールのセットを含み、前記第1および第2のコントローラが前記ガイドルールのセットに従って、前記プログラム命令を実行する請求項1に記載のシステム。
【請求項5】
前記第1および第2のコントローラが、前記ガイドルールのセットに従って、減速時間の長い方に基づいて前記第1および第2のロボットアームの動きの停止を同期化する請求項2に記載のシステム。
【請求項6】
前記第1および第2のコントローラが、前記ガイドルールのセットに従って停止後の前記第1および第2のロボットアームの動きの再開を同期化する請求項2に記載のシステム。
【請求項7】
前記第1および第2のコントローラが、前記ガイドルールのセットに従って前記第1および第2のロボットアームの単一段階動作を同期化する請求項2に記載のシステム。
【請求項8】
関連する制御プログラムに従って、少なくとも2本のロボットアームを制御する方法において、
前記少なくとも2本のロボットアームの少なくとも1つのコントローラと、データ交換手段とを接続する段階と、
データ領域内に各前記ロボットアーム用の関連する制御プログラムを記憶する段階と、
前記制御プログラムの実行をガイドする複数のガイドルールをデータ領域内に記憶する段階と、
前記制御プログラムのタイプに従って、前記ガイドルールのセットを選択する段階と、
前記少なくとも2本のロボットアームを同期的に制御すべく、ネットワーク接続を通してデータを生成するためガイドルールのセットに従って制御プログラムを実行する段階と、
からなる方法。
【請求項9】
前記ロボットアームのうちの1本がファミリーヘッドロボットでありもう1本がファミリーメンバーロボットである、少なくとも2本のロボットアームがロボットのファミリーを構成する請求項8に記載の方法。
【請求項10】
前記データ領域が、各前記制御プログラムのプログラムヘッダの一部であり、該プログラムヘッダが該少なくとも2つのロボットアームをロボットファミリーに含まれるものとして識別する請求項8に記載の方法。
【請求項11】
前記少なくとも2本のロボットアームの運動および該少なくとも2本のロボットアームにより実行されるアプリケーションプロセスのうちの少なくとも1つを同期化する段階を含む請求項8に記載の方法。
【請求項12】
前記運動の始めおよび終りのうちの少なくとも一方において該運動を同期化する段階を含む請求項11に記載の方法。
【請求項13】
前記アプリケーションプロセスの始めおよび終りのうちの少なくとも一方において該アプリケーションを同期化する段階を含む請求項11に記載の方法。
【請求項14】
前記ガイドルールに従って順方向プログラムの実行および逆方向プログラムの実行のうちの少なくとも1つを実施する段階を含む請求項8に記載の方法。
【請求項15】
前記少なくとも2本のロボットアームの動作を同期化すべく、外部入力に応答する段階を含む請求項8に記載の方法。
【請求項16】
連続するインターバルの間にデータを通信する段階を含み、これらのインターバルのうちの少なくとも1つの間に通信不具合に起因して失われるかもしれないデータが、該インターバルのうちの少なくとも1つの後続するものから、回復のために入手可能である請求項8に記載の方法。
【請求項17】
前記ガイドルールは、運動停止シーケンス、運動減速開始、運動減速終了、再開シーケンス、運動が停止された位置への復帰および例外処理のうちの少なくとも1つの同期化のためのルールを含む請求項8に記載の方法。
【請求項18】
例外処理の同期化は、少なくとも2本のロボット間で例外情報を通信することを含む請求項17に記載の方法。
【請求項19】
ネットワーク接続を通したデータの通信の遅延を計算に入れるため、ティックカウントを生成する段階を含む請求項8に記載の方法。
【請求項20】
定期的インターバルでデータを交換するための手段を通してデータを通信する段階を含む請求項8に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−183640(P2012−183640A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2012−151576(P2012−151576)
【出願日】平成24年7月5日(2012.7.5)
【分割の表示】特願2009−89031(P2009−89031)の分割
【原出願日】平成18年5月8日(2006.5.8)
【出願人】(505241005)ファナック ロボティクス アメリカ コーポレイション (18)
【Fターム(参考)】