マルチロボットシステムのデッドロックを自動的に防止する方法及びシステム
【課題】複数のロボットを含むワークセルにおける衝突及びデッドロックの回避を制御するシステム及び方法は、起こりうるデッドロック状態を自動的に決定し、起こりうるデッドロック状態を回避する方法を確定する。
【解決手段】デッドロック状態は、起こりうるデッドロック状態を有する動作を実行する前にデッドロックフリー動作状態を決定することによって除外される。デッドロックフリー動作ステートメントの決定を、オフラインで、通常の実行とは別に又は通常の製造の実行中に行うことができる。十分なCPU処理時間を利用できる場合、通常の製造の実行中の決定は、I/Oタイミングの変化又は外部イベント若しくはシーケンスのタイミングの変化のような動的な条件に応答するのに最大の適応性を与える。最小のCPUの影響に対して、決定はオフラインで行われ、この場合、プログラムシーケンスの多数の順列を分析することができ、最適化された実行のシーケンスを見つけることができる。
【解決手段】デッドロック状態は、起こりうるデッドロック状態を有する動作を実行する前にデッドロックフリー動作状態を決定することによって除外される。デッドロックフリー動作ステートメントの決定を、オフラインで、通常の実行とは別に又は通常の製造の実行中に行うことができる。十分なCPU処理時間を利用できる場合、通常の製造の実行中の決定は、I/Oタイミングの変化又は外部イベント若しくはシーケンスのタイミングの変化のような動的な条件に応答するのに最大の適応性を与える。最小のCPUの影響に対して、決定はオフラインで行われ、この場合、プログラムシーケンスの多数の順列を分析することができ、最適化された実行のシーケンスを見つけることができる。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
この出願は、2008年5月21日に出願された同時係属中の米国特許出願第12/124,430号の一部継続出願である。
【0002】
この出願は、2011年5月5日に出願された米国特許仮出願第61/482,808号の利益を主張する。
【0003】
本発明は、一般的には複数のロボットを制御するシステム及び複数のロボットの動作干渉回避を制御する方法に関する。
【背景技術】
【0004】
空間中の物体の動作は、典型的な製造環境における必要なタスクである。必要な動作を行うためにロボット工学がますます用いられるようになってきている。しかしながら、複数の物体を動作させるときに、物体間に干渉が生じることがある。物体が同一の座標系に対して同一の座標を有するときのように少なくとも二つの物体が同一の空間を同時に共有する場合、干渉がある。
【0005】
最近の産業用ロボットは相当な速度で動作するので、ロボット間の干渉によって衝突が生じ、ロボット及びロボットによって操作されるワークピースに不所望な損傷が加えられることがある。衝突により製造工程中に犠牲の大きい故障時間が生じることがある。したがって、そのような衝突を回避することが望ましい。
【0006】
従来のシステム及び方法は、干渉及び衝突を最小にするために用いられてきた。しかしながら、従来のシステム及び方法の複数の欠点が存在する。典型的には、工具中心点(TCP)は、予め決定された干渉エリアすなわち「静的空間」(static space)に対してのみ確認される。複数のロボットに対して、これらの衝突又は干渉を直ちに又は有効に防止するのは困難である。さらに、複数の動作するロボットの静止座標系に関する干渉空間を特定するのは困難である。任意の干渉空間はロボットの動作経路の関数であるだけでなく動作速度の関数でもある。二つ以上のロボットが共用空間で同時に動作することを要求するときのデッドロック状態を処理することを試みる際の困難もある。
【0007】
従来のシステムは、世界座標系に対する固定空間でロボットのTCPが衝突するのを防止する試みも行っている。(複数のコントローラを有する)複数のロボットがタスク実行中に共通空間すなわち「干渉」空間を共有するとき、各コントローラは、ロボットが共通空間に存在しなくなるまで待機する必要がある。この場合、コントローラは、ロボットに動作を許容するために動作制御コマンドを発することができる。この工程は、「待機及び動作」工程とも称され、一般的には作業サイクル時間を増大する。しかしながら、干渉空間はロボットの動作経路の関数であるだけでなく動作速度の関数でもあるので、固定座標系に対する干渉空間を有効に特定するのは困難である。一つを超えるロボットが共通空間で同時に動作することを要求するとき、ロボットは、ロボットが互いに待機するためにいずれのロボットも動作することができないデッドロック状態を作り出す。
【0008】
従来のシステムは、球及び円柱によってロボットのモデルを作る試みも行っている。従来のシステムは、リアルタイムでの動作中にロボットの将来の位置を予測する。従来のシステムは所定の時間に亘ってロボットによって占有される累積空間(accumulated space)を決定しないので、従来のシステムは、ロボットの動作中に頻繁に比較を行う必要がある。従来のシステムは、作業セルの全てのロボットのモデルを構成要素ごとに比較する。この比較は、計算コストが非常に高くなり、コストは、ロボット並びにロボット及び工具のモデルを作るのに用いられる構成要素の個数が増大するに従って飛躍的に高くなる。差し迫った衝突が検出されるときに比較がリアルタイムで行われるので、従来のシステムは、一般的には差し迫った衝突に伴う全てのロボットを停止させる必要があり、自動プログラム動作を中断する必要がある。従来のシステムは、ロボットが異なるコントローラに属するときに更に困難になる。その理由は、従来のシステムがコントローラ間でリアルタイムの通信を行うために多量の情報を必要とするからである。従来のシステムは、干渉を回避するためにI/Oハンドシェイク機構を利用する試みも行っている。本発明において、I/O PLCの必要はない。
【0009】
既知のシステム及び方法の一つは、譲受人による同時係属中の国際出願番号PCT/US2007/066638に開示されており、参照すにより全体がここに組み込まれる。かかるシステム及び方法は、ロボットの動作の効率を最大にするとともに複数のロボットの干渉又は衝突の可能性を最小にする「動的空間確認」(dynamic space check)システムを有する。各コントローラによって制御されるロボットは、ユーザによって定義された動的空間(user-defined dynamic space)でのみ動作し、これにより衝突を回避する。しかしながら、動的空間確認システムは、一般的にはユーザによって定義された直線で囲まれた空間(user-defined rectilinear space)に対してのみTCPを保護する。
【0010】
ロボットの衝突を回避する他の既知の方法は、Pollack等による米国特許第5,150,452号明細書で報告されている。この方法は、所望のロボットの動作を含む衝突マップを作成することを含む。排他的論理和演算においてロボットマップと「ワールド」マップとを組み合わせ、その後、排他的論理和演算において衝突マップと「ワールド」マップとを組み合わせるのに続いて包含的論理和演算において衝突マップと「ワールド」マップとを組み合わせることをバイト単位で行うことによって、所望のロボットの元の位置が「ワールド」マップから取り除かれる。衝突は、包含的論理和の組合せ及び排他的論理和の組合せの任意のビット位置の差によって表される。この方法は、衝突を検出するために2次元的なx−y投影(x-y projection)及び1次元的な高さを与えるが、3次元的なリアルタイムの衝突検出を行うことができない。
【0011】
ロボットと一つ以上の障害との間の衝突を衝突が生じる前に検出する更に別の既知の方法は、Greenspan等による米国特許第5,347,459号明細書に記載されている。ロボットは、ボクセル作業空間(voxelized workspace)において球によってモデルが作られる。作業空間中の各ボクセルには、最も近い障害からの距離に対応する値が割り当てられる。球の中心のボクセル値がボクセル中の他の球の半径より小さい場合には、衝突間近であると決定される。しかしながら、この方法は、単一のロボットアームを保護するだけである。ロボットは、球のみによってモデルが作られ、したがって、ロボットの重要な工程経路の保護には不十分である。
【0012】
複数のロボットの動作干渉回避を制御するシステム及び方法が引き続き必要となっている。望ましくは、システム及び方法は、3次元的なリアルタイムの衝突の検出を行い、ロボットシステムにロボットの動作を予め提供し、衝突のないプログラムされた軌跡を保存し、かつ、重要な工程経路を保護する。
【0013】
プログラム又はタスクが、プログラム又はタスクのいずれかの継続するシーケンシャル実行(continued sequential execution)の結果としてプログラム又はタスクに関連した一つ以上のロボット間に干渉が生じ、かつ、干渉なく順次に進行することができるプログラム又はタスクが存在しない状態になったとき、デッドロック状態が生じる。
【0014】
Chaffee等による米国特許第7,114,157号は、設定命令(set order)においてリソースを取得することによってデッドロックを回避する方法を記載している。この方法はデッドロックを回避することができるが、この方法は、設定デッドロックフリー命令(set deadlock-free order)が決定されなかった場合には動作を許可する能力がない。さらに、この方法は、要求された命令が規定のデッドロックフリー命令とは別である場合にはデッドロックフリーとすることができる動作を許可しない。
【0015】
Chang等による米国特許出願第2009/0326711号明細書は、自動的に又は手動でデッドロックを回避するために自動区分(automatic zone)を利用する方法を記載する。Changは、デッドロックを防止するために優先値(priority value)を使用する方法を示唆している。Changは、優先値を使用しない場合にデッドロックを防止する方法を示唆していない。
【発明の概要】
【発明が解決しようとする課題】
【0016】
本開示によれば、複数のロボットの動作干渉回避を制御するシステム及び方法であって、3次元的なリアルタイムの衝突の検出を行い、ロボットシステムにロボットの動作を予め提供し、衝突のないプログラムされた軌跡を保存し、かつ、I/Oハンドシェイク機構を利用することなく重要な工程経路を保護するシステム及び方法は、驚くべき発見である。
【課題を解決するための手段】
【0017】
一実施の形態において、共通の作業空間を有する1対のロボットのデッドロックを防止する方法であって、ロボットの各々は、関連のプログラムによって制御され、プログラムが同時に実行されるとき、ロボットの各々が、関連のプログラムの実行の一部の間に共通の作業空間の少なくとも一部を占有し、プログラムの同時実行中に、ロボットによって占有される共通の作業空間の部分を識別するステップと、共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、少なくとも一つのデッドロック状態となるロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、プログラムの実行中に少なくとも一つのデッドロック状態を回避するステップと、を備える。
【0018】
他の実施の形態において、共通の作業空間を有する1対のロボットのデッドロックを防止する方法を実行するためにコンピュータによって実行可能な命令を有するコンピュータ読出し可能媒体であって、ロボットの各々は、関連のプログラムによって制御され、プログラムが同時実行されるとき、ロボットの各々が、関連のプログラムの実行の一部の間に共通の作業空間の少なくとも一部を占有し、方法は、プログラムの同時実行中に、ロボットによって占有される共通の作業空間の部分を識別する命令と、共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別する命令と、少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別する命令と、少なくとも一つのデッドロック状態となるロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、プログラムの実行中に少なくとも一つのデッドロック状態を回避する命令と、を備える。
【0019】
他の実施の形態において、共通の作業空間を有する複数のロボットのデッドロックを防止する方法であって、ロボットの各々は、関連のプログラムによって制御され、プログラムが同時実行されるとき、ロボットの各々が、関連のプログラムの実行の一部の間に共通の作業空間の少なくとも一部を占有し、プログラムの同時実行中に、ロボットによって占有される共通の作業空間の部分を識別するステップと、ロボットの少なくとも二つのロボットについて共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、少なくとも一つの干渉領域を分析するとともに少なくとも二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、少なくとも一つのデッドロック状態となる少なくとも二つのロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、プログラムの実行中に少なくとも一つのデッドロック状態を回避するステップと、を備える。
【0020】
本発明によるシステム及び方法は、既知のデッドロックフリーシーケンスを必要としない。本発明によるシステム及び方法は、あり得るデッドロック状態を自動的に決定し、あり得るデッドロック状態を回避する方法を確定する。本発明によるシステム及び方法は、デッドロックを防止するための優先値を必要としない。本発明によるシステム及び方法は、干渉状態を防止するのと同時に、存在しうるデットロック状態を防止する。
【0021】
本発明の上記利点及び他の利点は、添付図面を考慮するときに好適な実施の形態の詳細の説明から当業者に明らかになる。
【図面の簡単な説明】
【0022】
【図1】ワークセル内で動作する第1のロボット及び第2のロボットを有する本開示による典型的なロボットシステムを示す。
【図2】本開示による干渉確認自動区分法を示す工程図である。
【図3】図1に示す第1のロボットと第2のロボットのうちの一方のボクセル化モデルを示す。
【図4】図3に示すボクセル化モデルの等角図である。
【図5】第1のロボットと第2のロボットのうちの一方を覆うボクセル化した球及び円柱によって形成されたボクセル化モデルを有する図1に示す第1のロボットと第2のロボットのうちの一方の拡大図を示す。
【図6】複数のボクセルから形成した図5に示すボクセル化球およびボクセル化円柱を示す。
【図7A】本発明によるデッドロックフリー行列及び関連のプログラムリストを示す。
【図7B】本発明によるデッドロックフリー行列及び関連のプログラムリストを示す。
【図7C】本発明によるデッドロックフリー行列及び関連のプログラムリストを示す。
【図8A】本発明による干渉行列及び関連のプログラムリストを示す。
【図8B】本発明による干渉行列及び関連のプログラムリストを示す。
【図8C】本発明による干渉行列及び関連のプログラムリストを示す。
【図8D】本発明による干渉行列及び関連のプログラムリストを示す。
【図9】複数のデッドロック領域を組み合わせて単一のデッドロックフリー領域にする経路及び関連の表を示す。
【図10】本発明によるデッドロック防止を行わない複数のロボットプログラム実行シーケンス及び本発明によるデッドロック防止を行う複数のロボットプログラム実行シーケンスを示す。
【図11】本発明によるデッドロック回避シーケンスの流れ図である。
【図12】本発明によるあり得るデッドロック領域を決定するための流れ図である。
【発明を実施するための形態】
【0023】
以下の説明は、本質的には単なる例示であり、この開示、この出願又は使用を制限することを意図しない。図面中、対応する参照番号が同様な又は対応する部分及び特徴を表すことを理解すべきである。開示した方法に関して、示したステップは、本質的には例示であり、したがって、必須でも重要でない。
【0024】
図1は、複数のロボット間の衝突回避を制御するロボットシステム2を示す線形図である。限定されない例として、ロボットシステム2を、少なくとも二つのロボットを有するボディーショップロボットシステム(body shop robot system)、ウォータジェット切断ロボットシステム(waterjet cutting robot system)、レーザ溶接ロボットシステム、アーク溶接ロボットシステム及び塗装ロボットシステムのうちの一つとすることができる。所望に応じて、複数のロボットを有する他のロボットシステム2を用いることもできる。
【0025】
ロボットシステム2は、第1のロボット6及び第2のロボット8が動作するように構成されるエンベロープ(envelope)を規定するワークセル4を有する。第1のロボット6及び第2のロボット8は、ワークセル4内に配置された少なくとも一つの共通空間10を選択的に占有するように構成される。第1のロボット6及び第2のロボット8のみを示すが、当然のことながら、ロボットシステム2は、開示の範囲及び精神から逸脱することなく2を超える数のロボットを有することができる。
【0026】
第1のロボット6は、第1のプログラム経路(programmed path)に沿った第1のロボット6の動作中に共通空間10の第1の部分12を占有することができる。第2のロボット8は、第2のプログラム経路に沿った第2のロボット8の動作中に共通空間10の第2の部分14を占有することができる。第1の部分12及び第2の部分14は、「自動区分」(automatic zone)又は「自動ゾーン」(autozone)としても知られている。各プログラム経路は、一つ以上の自動区分を備え、各自動区分は、予め処理され、一つ以上の動作ステートメントから取得される。第1のプログラム経路及び第2のプログラム経路を、例えば、複数の動作ステートメントを有する一連の命令中の一つ以上の動作ステートメントによって制御することができる。当業者は、第1のロボット6及び第2のロボット8の動作を制御する干渉回避方法を用いない場合には第1の部分12及び第2の部分14が重なることがあるためにロボットの干渉の可能性があることを理解すべきである。
【0027】
第1のロボット6及び第2のロボット8は、少なくとも一つのコントローラ16,18によって制御される。図1に示す実施の形態において、第1のロボット6は、第1のコントローラ16によって制御され、第2のロボット8は、第2のコントローラ18によって制御される。少なくとも一つのコントローラ16,18は、電源(図示せず)と電気的なやり取りを行うように適合される。コントローラ16,18は、コントローラ16,18内にあるコンピュータプログラムのような一連の命令を実行することができる。他の実施の形態において、一連の命令は、コントローラ16,18とやり取りを行うコンピュータ読出し可能媒体又はメモリに存在することができる。
【0028】
ロボットシステム2は、種々のシステム構成要素に接続するように構成されたネットワーク媒体(図示せず)、プログラマブル論理装置(図示せず)及び少なくとも一つのコントローラ16,18と電気的なやり取りを行う教示装置(teaching device)20のうちの少なくとも一つのような従来既知の他の構成要素を更に有することができる。特定の実施の形態において、教示装置20は、モニタを有することができ、所望に応じてロボットシステム2のオペレータが観察するために、第1のロボット6、第2のロボット8、共通空間10の第1の部分12及び共通空間10の第2の部分14を映像によって表すように構成される。教示装置20は、ロボットのジョグ操作を行うための一連の命令を行う(initiate)手段を有することもできる。
【0029】
本開示による典型的な一連の命令を図2に示す。一連の命令は、干渉確認自動区分法(interference check automatic zone method)200を有する。干渉確認自動区分法200は、先ず、ワークセル4内に少なくとも一つの共通空間10を設ける開始ステップ202を有する。開始ステップ202の後に第1の決定ステップ204及び第2の決定ステップ206が続く。第1の決定ステップ204は、第1のプログラム経路に沿った第1のロボット6の動作中に占有される共通空間10の第1の部分12の決定を含む。第2の決定ステップ206は、第2のプログラム経路に沿った第2のロボット8の動作中に占有される共通空間10の第2の部分14の決定を含む。当然のことながら、第1の部分12及び第2の部分14を、自動的に、すなわち、従来知られているような各ロボットの動作のユーザ指定区分を必要とすることなく決定することができる。その後、第1の部分12及び第2の部分14は、これらの間に重なり210が存在するか否かを決定するために比較ステップ208で比較される。
【0030】
限定されない例として、第1の決定ステップ及び第2の決定ステップを、第1のロボット6及び第2のロボット8を有するロボットシステム2の開始動作中に実質的にリアルタイムで行うことができる。開始動作を、第1のロボット6と第2のロボット8との任意のあり得る衝突を回避するためにロックダウンモード(lockdown mode)において第1のロボット6及び第2のロボット8によって行うことができる。他の例において、第1の決定ステップ204及び第2の決定ステップ206を、例えば、リアルタイム動作中にロボット6,8によって占有することができる共通空間10の第1の部分12及び第2の部分14を識別するために第1のプログラム経路及び第2のプログラム経路のオフライン実行(offline run)により行うことができる。第1の決定ステップ204及び第2の決定ステップ206中に識別された第1の部分12及び第2の部分14を、例えば、メモリに保持し、第1のロボット6及び第2のロボット8の次の動作中に再利用することができる。その結果、第1のロボット6及び第2のロボット8の衝突に影響を及ぼすために第1のロボット6及び第2のロボット8の動作のプログラム経路すなわち軌道が予め処理されるとともに保持されることを理解すべきである。
【0031】
第1のロボット6及び第2のロボット8の第1の移動ステップ212及び第2の移動ステップ214は、重なり210の存在に応じて選択される。第1の部分12と第2の部分14との間に重なり210が存在する場合、ロボット6,8の衝突の可能性があり、第1の移動ステップ212が選択される。第1の移動ステップ212は、第1のプログラム経路に沿う第1のロボット6と第2のプログラム経路に沿う第2のロボット8のうちの一方のみの移動を含む。第1の部分12と第2の部分14との間に重なり210が存在しない場合、ロボット6,8の衝突の可能性がなく、第2の移動ステップ214が選択される。第2の移動ステップ214は、第1のプログラム経路に沿う第1のロボット6の移動及び第2のプログラム経路に沿う第2のロボット8の移動を含む。
【0032】
第1の決定ステップ204及び第2の決定ステップ206を、従来既知の任意の手段によって行うことができる。本開示による一つの特定の実施の形態において、第1の決定ステップ204及び第2の決定ステップ206は、図3〜6に実例で示すような少なくとも一つのボクセル302を有する少なくとも一つのボクセルモデル300を有する共通空間10、第1の部分12及び第2の部分14のうちの少なくとも一つを表すステップを有することができる。ボクセル302は、3次元空間において規則的なグリッド上に値を表すボリュームエレメント(volume element)である。比較ステップ208は、例えば、第1の部分12を表す第1のボクセルモデル300と第2の部分14を表す第2のボクセルモデル300との間に重なり210が存在するか否かを決定するステップを有することができる。ボクセル300は、一般的には第1のロボット6及び第2のロボット8の基部、アーム及び工具のような種々の構成要素の形状を近似する複数のボクセル302によって表される。
【0033】
図3及び図4を参照すると、実例のボクセルモデル300は、X軸、Y軸及びZ軸に沿った座標に配置された複数のボクセルを有することができる。ボクセルモデル300は、第1のロボット6と第2のロボット8の少なくとも一方によって占有される共通空間10の3次元ボリュームを表現するよう構成される。ボクセルモデル300を、生成されるデータファイルの形態にすることができ、例えば、コントローラ16,18、他のコンピュータ読取可能媒体又は他のメモリに保存することができる。所定の実施の形態において、ボクセルモデル300は、動的であり、ロボットの一連の動作に関連した複数のモデル300を有する。動的なボクセルモデル300を、第1のロボット6と第2のロボット8の少なくとも一方の動作中に占有される共通空間10の3次元ボリュームを表現するために用いることができる。各自動区分を、ボクセルモデル300の複数のスナップショット(snapshot)の累積/重ね合わせ(accumulation/superimposition)から取得し、各スナップショットは、一つ以上のITP間隔から取り出される。
【0034】
図5及び図6を参照すると、第1のロボット6及び第2のロボット8のボクセルモデル300は、第1のロボット6及び第2のロボット8によって占有された3次元ボリュームを表すためにボクセル化された球500及びボクセル化された円柱502のうちの少なくとも一方を有することができる。ここで更に説明するように、ボクセル化された球500及びボクセル化された円柱502は、第1のロボット6及び第2のロボット8の基部、アーム及び工具のような種々の構成要素を表すことができる。ボクセル化された球500及びボクセル化された円柱502は、一般的には第1のロボット6及び第2のロボット8の一般的な形状及び境界を近似するために相互配置された複数のボクセル302を有する。
【0035】
当業者は、ボクセル化された球500及びボクセル化された円柱502を任意の適切な手段によって生成することができることを理解すべきである。例えば、ボクセル化された球500を、ロボット6,8の構成要素を表す典型的な球をX−Y平面に投影することによって近似することができる。この場合、球を包囲する最も小さい円柱Aが識別される。その後、同一の球をY−Z平面に投影し、球を包囲する最も小さい円柱Bを識別する。その後、同一の球をZ−X平面に投射し、球を包囲する最も小さい円柱Cを識別する。その後、ボクセル化された球500は、円柱A、円柱B及び円柱Cの交差を識別することによって近似される。
【0036】
他の実施の形態において、ボクセル化された球500を、ロボット6の構成要素及びロボット8の構成要素を表す球を包囲する最小のボックスを最初に見つけることによって近似することができる。ボックスは、ボリューム占有Aを有する。ボックスAの内側にあるとともに球の外側にあるボクセルボリューム占有Bが識別される。その後、ボクセル球500は、値Aから値Bを減算することによって近似される。
【0037】
ボクセル化された球500を、典型的な球とX−Y平面との交差を識別することによって近似することもできる。交差は、Z軸沿いに球の中心を有し、交差した円形プレートA1を形成する。円形面A1には任意の高さが割り当てられ、その後、交差した円形プレートA1のボクセルの占有が識別される。さらに、円形プレートA2,A3,...,A(n)を、典型的な球とX−Y平面の交差をZ軸に沿ってシフトすることによって決定し、これらのボリューム占有が同様に識別される。その後、ボクセル化された球500は、典型的な球の円形プレートに対して識別されたボクセル占有の各々を統合することによって近似される。
【0038】
ボクセル化された円柱502を、左半球/全球のボクセル占有Aを識別し、右半球/全球のボクセル占有Bを識別し、左半球と右半球との間の複数の円形プレートのボクセル占有Cを識別することによって近似することができる。この場合、基線に垂直な円形基板が形成される。基線は、円柱の両端で二つの半球を接続する。次に、円形面を、円形基板をZ軸に沿ってシフトすることによって取得することができる。基線のボクセル占有を計算し、次に、二つの半球間の全領域を満たすために基線をシフトすることもできる。次に、ボクセル化された円柱502を、ボクセル占有A、ボクセル占有B及びボクセル占有Cの各々を統合することによって近似する。
【0039】
ボクセル化された円柱502を近似する他の方法は、ロボットの構成要素を表す典型的な円柱を包囲することができる最小のボックスを最初に識別することを含む。ボックスはボリューム占有Aを有する。その後、ボックスの内側にあるとともに円柱の外側にあるボクセルボリューム占有Bが識別される。次に、ボクセル化されたシリンダ502を、ボクセルボリューム占有Aからボクセル占有Bを減算することによって近似する。当業者は、ロボット6,8の構成要素を表すボクセル化された球500及び円柱502を近似するのに適切な他の手段を所望に応じて用いることができることを理解すべきである。
【0040】
ボクセル化(voxelization)を、ロボット、アームドレスアウト(arm dressout)及びツーリング(tooling)を表すことができる任意のCAD表面又はボリューム(CAD surface or volume)から同様にして決定することもできる。
【0041】
ボクセル化は、ロボットの動作セグメント(motion segment)によって占有される空間を表すのに非常に有効な方法である。ボクセル化工程は、ボクセル化された空間を形成するためにある程度の計算オーバーヘッド(computational overhead)を有するが、ランタイムコンポーネント(run-time component)は非常に有用である。一度空間がボクセル化されると、動作経路中にロボットによって占有される共通空間の複雑さの程度又は量に関係なくボクセル化された空間に要求される最大の記憶容量は固定される。ボクセル化された空間の間の干渉のランタイム確認は非常に有効である。好適な実施の形態は、ボクセル化された領域によって表すために干渉確認自動区分を提供するが、動作経路中にロボットによって占有される空間のボリューム又は表面を表す任意の方法を用いることができる。
【0042】
他の実施の形態は、プログラムされた動作中、ジョグ操作によって開始される動作中又は他の手段によって開始される動作中の衝突を回避する。他の実施の形態は、動作中のロボットを、ワークセル中の静止しているロボット、他の固定された物体又は他の規定された領域への衝突から保護する。プログラムされた動作に対して、ボクセル化工程又は他の干渉確認自動区分モデル化工程を、オフライン中又はテストラン中に行うことができ、ボクセル化されたデータは、後の探索のために効率的に格納される。この工程を、新たな動作経路が新たなプログラム、ロボットのジョグ操作又は他の手段によって開始される動作から決定されるときにリアルタイムで行うこともできる。これらの場合に対して、一連の命令を、教示装置の使用又は動作を開始する他の手段によって決定することができる。実際の動作は、工程が完了するとともにこの干渉確認自動区分及び他の占有された干渉確認自動区分による干渉がなくなるまで開始するのを許可されない。
【0043】
他の実施の形態において、共通空間10の第1の部分12及び第2の部分14の少なくとも一方は、第1のロボット6及び第2のロボット8の少なくとも一方に取り付けられたツーリングによって占有されるツーリング空間(tooling space)及びドレスアウトアッセンブリ(dressout assembly)(例えば、アークツールワイヤフィーダ(ArcTool wire feeder))を有することができる。重なり210を決定するステップは、第1の部分12及び第2の部分14の少なくとも一方とロボット以外の障害(non-robot obstacle)(図示せず)によって占有される共通空間10の第3の部分との比較を含むこともできる。障害を、所望に応じて共通空間10の寸法、形状及び位置を規定するのに用いられるパラメータのセットによって手動で特定することができる。他の例において、方法200は、障害によって占有される共通空間10の第3の部分を決定するステップを更に有することができる。ロボット以外の障害によって占有される共通空間の第3の部分を所望に応じて同様なボクセルモデル300のボクセル302によって表すこともできることを理解すべきである。
【0044】
本開示の方法200は、第1のプログラム経路に沿った第1のロボット6の動作及び第2のプログラム経路に沿った第2のロボット8の動作の少なくとも一方の後に共通空間10の非占有部分を決定するステップを更に有することもできる。この場合、共通空間10の非占有部分を、所望に応じて他のプログラム経路すなわち軌道に従う他のロボットによって使用できるようにする。他の実施の形態において、方法200は、本開示の方法200による他の使用のために共通空間10の第1の部分12及び第2の部分14の座標を少なくとも一つのコントローラ16,18に移すステップを有することができる。この場合、コントローラ16,18は、ここで説明した第1の決定ステップ204及び第2の決定ステップ206の少なくとも一方を行うとともに座標を第1の部分12及び第2の部分14を表すボクセルモデル300に変換するために用いることができる。
【0045】
当業者は、共通空間10の第1の部分12と第2の部分14との間に重なりが存在するか否かを決定する際に第1のロボット6の動作と第2のロボット8の動作のそれぞれを優先値によって決定できることを理解すべきである。限定されない例として、第1のロボット6及び第2のロボット8の優先値は、先入れ先出しシステムに基づくことができる。他の例において、第1のロボット6及び第2のロボット8の一方は、常に第1のロボット6及び第2のロボット8の他方よりも高い優先値を有することができる。高い優先値は、ロボットシステム2のロボット6,8の優先度に対する予め決定されたユーザ設定に基づくことができる。他の例において、優先値を、共通空間10内の非占有部分の利用可能性に基づいて選択することができる。当業者は、所望に応じて第1のロボット6及び第2のロボット8に対して所望の優先値を割り当てることができる。
【0046】
他の実施の形態において、方法200は、デッドロック状態となり得る重なり210の存在に対する複数のプログラム経路を分析するステップを更に有することができる。次に、デッドロック状態の発生に影響を及ぼすために複数のプログラム経路の動作シーケンスを所望に応じて調整することができる。動作シーケンスを、例えば、所望に応じて優先値に基づいて手動で又は自動的に調整することができる。
【0047】
当然のことながら、本開示の干渉確認自動区分システム2及び方法200は、従来のマルチアームロボットシステムよりも優れた利点を提供することができる。システム2及び方法200は、3次元的なリアルタイムの衝突回避を行う。システム2は、最小のプログラミングしか必要としない。その理由は、システム2が干渉区域の特定又は教示の必要に影響を及ぼすからである。これによって、生産休止時間も減少する。
【0048】
当業者は、ボクセル化された球500及び円柱502を使用することによって典型的にはロボットモデルの生成に関連した処理要求を最小にすることも理解すべきである。第1のロボット6及び第2のロボット8の動作は、例えば、ボクセルモデル300のオフライン生成によってシステム2に予め伝達される。同様に、第1のロボット6及び第2のロボット8のプログラム経路すなわち軌道は、衝突なく保持される。工程経路は、切断、溶接、研削、ルーティング(routing)、塗装、分配(dispensing)等のアプリケーション工程(application process)又は他の同様な工程を行う間の一連の動作である。一度工程が開始されると全体の工程経路を中断なく完了することは、一般的には重要である。当然のことながら、第1のロボット6及び第2のロボット8の重要な工程経路も本方法200によって同様に保護される。
【0049】
システム2は、所望に応じて同一のコントローラ16,18内及び複数のコントローラ16,18間の複数のロボットアームの衝突の回避をサポートする。さらに、システム2及び方法200は、簡単なロボット形態を提供し、所定の従来のシステム及び方法で行われるようなI/Oハンドシェイクプロトコルの必要に影響を及ぼす。干渉確認自動区分システム2及び方法200は、複数のアーム干渉確認の形態を簡単化し、複数のロボットアームのデッドロックに影響を及ぼす。
【0050】
干渉防止及びデッドロック防止は密接な関係がある。干渉は、二つのロボットが同一の物理的な空間を占有することを試みるときに生じる。干渉を防止する一つの方法は、現在の動作コマンドにおいて全てのロボットによって占有されている又は将来占有される空間の確認及び干渉が生じる前の一つ以上のロボットの停止を伴う。このタイプの干渉防止は、停止しているロボットの一つ以上が他のロボットによって必要である又は将来必要とされる空間を現在占有しているとともに他のロボットにより妨害され続けているために停止しているロボットが始動できないときにデッドロックが生じる傾向が非常に高いという重大な不都合を有する。
【0051】
干渉を防止する他の方法は、ロボットプログラムに開始区分コマンド及び終了区分コマンド(enter and exit zone commands)をプログラム的に(programmatically)挿入することによって設定することである。これらのコマンドは、一つのロボットだけが一度に特定区分を占有できるようにすることを容易にするためにPLC又は他のロボットとやり取りを行う。単一の区分に対して、ほとんど影響がない。主要な問題は、利用可能となっているときに複数のロボットが待機中である場合に誰が区分を取得するかという優先度の一つである。しかしながら、複数の区分に対して、デッドロックが非常に生じやすくなっている。例えば、隣接する区分に対して、各ロボットが現在一つの区分を占有するとともに次の動作が他のロボットに占有されている区分内で行われるか否かを知ることは容易である。この場合、各ロボットは、他のロボットが所望の区分をあきらめるのを永久に待つ。デッドロック状態が生じる。
【0052】
本発明によるシステム及び方法は、起こりうるデッドロック状態を有する動作を実行する前にデッドロックフリー動作ステートメントを決定することによって上述した場合におけるデッドロック状態を除外する。デッドロックフリー動作ステートメントの決定を、オフラインで、通常の実行とは別に又は通常の製造の実行中に行うことができる。十分なCPU処理時間を利用できる場合、通常の製造の実行中の決定は、I/Oタイミングの変化又は外部イベント若しくはシーケンスのタイミングの変化のような動的な条件に応答するのに最大の適応性を与える。最小のCPUの影響に対して、決定はオフラインで行われ、この場合、プログラムシーケンス(programming sequence)の多数の順列(permutation)を分析することができ、最適化された実行のシーケンスを見つけることができる。
【0053】
本発明によるシステム及び方法は、既知のデッドロックフリーシーケンス(deadlock-free sequence)を必要としない。システム及び方法は、起こりうるデッドロック状態を自動的に決定し、起こりうるデッドロック状態を回避する方法を特定することができる。システム及び方法は、デッドロックを回避するために優先値を必要としない。システム及び方法は、干渉状態を防止し、同時に、デッドロック状態の可能性が存在しないようにする。
【0054】
第1のロボットによって実行される「元のプログラムA」のリスト401の行番号及び第2のロボットによって実行される「元のプログラムB」のリスト403の行番号の「デッドロックフリー行列」400を、図7に示す。行列400の網掛けセルは、デッドロックフリー領域を規定する上方向の凸包(ascending convex hull)を表す。網掛けセルの大部分は、一方のプログラムの行i−1から行iまでの経路及び他方のプログラムの行j−1から行jまでの経路の進行中に干渉を有するプログラム行の対を表す。残りのセルは、上方向の凸包を完成することが要求される。行列400のセルを、(i,j)の形式で指定することができ、この場合、iは、プログラムAの行番号であり、jは、プログラムBの行番号である。したがって、干渉セルは、(3,6;3,7;4,5;4,6;4,7;5,4;5,5;5,6;5,7)であり、残りのセルは、(3,4;3,5;4,4)である。
【0055】
例えば、プログラムAが行3にあり、プログラムBが行5にある場合、デッドロック状態が存在する。その理由は、Aが行4に移動することを試みる場合、行5でBとの干渉があり、Bが行6に移動することを試みる場合、行3でAとの干渉があるからである。したがって、いずれのロボットも進行することができない。Aの行3から行5まで及びBの行4から行7までのデッドロック区分を完成することによって、一方のプログラムA又はBのみが一度にこの区分を占有することができる。これは、「新たなプログラムA」のリスト402及び「新たなプログラムB」のリスト404に示すようなプログラムの例においてZONE[1]として識別される。
【0056】
図8は、「干渉行列」405を三つのデッドロックフリー区分:ZONE[1],ZONE[2],ZONE[3]に細分することができる例を示す。干渉セルは、(3,3;3,4;3,5;3,6;3,7;4,5;4,6;4,7;5,4;5,5;5,6;5,7:6,6;6,7)である。ZONE[1]は、セル(3,3;3,4;3,5;3,6;3,7)を有する。ZONE[2]は、セル(4,5;4,6;4,7;5,4;5,5;5,6;5,7)を有する。ZONE[3]は、(6,6;6,7)を有する。上方向の凸包は、三つの凸包を形成できるようにするとともに全領域が上に凸となるように、仮想的な干渉であるセル(4,4)を通じて形成される。三つの区分は、「新たなプログラムA」リスト406及び「新たなプログラムB」リスト407に組み込まれる。任意の干渉のない行の対の組合せにおいて少なくとも一つのプログラムが干渉なく次の行に進むことができる場合はない。
【0057】
図9は、デッドロックが存在しうる複数の干渉領域及び二つのデッドロック領域を有するプログラムの対の例を示す。「プログラムA」は、行3から行15までの経路409を進む。「プログラムB」は、行9から行21までの経路410を進む。プログラムは、経路及び表413に示すような第1のデッドロック領域412及び第2のデッドロック領域411を有する。単一のデッドロック領域を形成する簡単な方法は、全ての干渉領域及び介在する非干渉領域を組み合わせて表414に示すような単一の領域にすることであり、この領域は、もともとデッドロックがない。
【0058】
図10は、「プログラムA」及び「プログラムB」をそれぞれ実行するロボット6,8の五つのシーケンスを示す。最も左にある第1のシーケンスにおいて、ロボット6は、ロボット8が動作することなく「プログラムA」を実行する。右側の次のシーケンスにおいて、ロボット8は、ロボット6が動作することなく「プログラムB」を実行する。真ん中のシーケンスにおいて、ロボット6,8は、各プログラムを同時に実行し、衝突が生じる。右側の次のシーケンスは、デッドロックが生じる従来の干渉回避を行いながら各プログラムを同時に実行するロボット6,8を示す。最も右側のシーケンスは、本発明によるデッドロック防止を行いながら各プログラムを同時に実行するロボット6,8を示し、両プログラムは、干渉なく完了する。
【0059】
上述したシステム及び方法は、衝突の防止とあり得るデッドロックの処理の両方を行うためにプログラムステートメントを自動的に追加及び/又は修正する。一部のケースにおいて、発される自動待機コマンドによって、全体のサイクル時間を所定のジョブのために増大させる。サイクル時間の増大が許容されない場合、本発明によるシステム及び方法は、ロボットが停止することなくプログラムを実行することができる再設定経路(re-sequenced path)を推奨又は自動的に形成する。すなわち、二つのロボットが一度に同一空間を占有する予定である経路の部分が存在する場合、システム及び方法は、この状態を除去するために新たな経路シーケンス(溶接を想定した場合には、異なる順序のスポット)を自動的に推奨する。このようにプログラム命令を再設定する特徴は、塗装屋の塗布に用いることができる。
【0060】
条件実行ステートメントがプログラム中に生じる場合、分析は、シーケンシャル実行の全ての組合せを含むことができる。又は、簡単のために、条件分岐領域に含まれるプログラムセグメントを、独立したものとして扱うことができる。典型的には、ロボットプログラマは、そのような条件領域を教示し、領域に対する入力経路及び領域に対する出力経路が他のロボットとの干渉を有さなくするとともに独立した扱いを実用的にできるようにする。しかしながら、条件領域に対する入力経路及び条件領域に対する出力経路が他のロボットとの干渉を有する場合、干渉のないこと及びデッドロックのないことを保証するために条件領域及び非条件領域の複数の組合せを分析する。
【0061】
この方法の利点の一つは、デッドロック状態を除去することができる機構と同一の機構が通常のプログラム動作中に干渉も除去できることである。したがって、ロボット間の干渉のリアルタイムの確認を、通常プログラム動作中に除去することができる。これは、処理時間を更に高い補間速度すなわち更に短い補間時間のような他の目的のために用いることができる著しいCPU利用を確保することができる。エラー状態中すなわちプログラムが実行されないとき、「3次元自動区分によるマルチアームロボットシステム干渉確認」(Multi-Arm Robot System Interference Check Via Three Dimensional Automatic Zones)の表題の同時係属中の米国特許出願第12/124,430号で提案されているようなCPUの使用が少ない干渉確認を、干渉を防止するために用いることができる。
【0062】
プログラムによって占有される空間を、物理的な空間、時間、プログラムシーケンス、行番号、プルグラム若しくは行の完了の割合又はロボット、プログラム若しくはシステムに関連した状態変化の関数とすることができる。干渉領域及びデッドロック領域は、占有空間を規定する関数と同一の関数によって関連付けられる。
【0063】
デッドロックを回避する方法をさまざまな形で実行することができる。最も簡単な方法は、図9に示すようにデッドロック及び干渉を防止するよう干渉領域を展開する(expand)ことである。全プログラムに対して一つの干渉領域のみが存在するように干渉領域を展開することは、システムがデッドロックフリーになることを保証するが、サイクル時間が重要である場合、シーケンス制御の一部のソート及び/又は複数の干渉領域を用いることができる。他の方法は、デッドロックを防止するために干渉領域外に実行シーケンスを設けることである。これを、第1のロボットが進行する前にデッドロック状態が存在しうるプログラム実行の一部を完了するために第1のロボットが第2のロボットを待機することによって簡単に行うことができる。
【0064】
占有空間を決定することができる複数の方法がある。最も簡単な方法は、占有面積を純粋にプログラム実行中にロボットによって占有される累積空間(cumulative space)とすることである。複数のロボットがこのように決定された占有空間を有するとき、干渉領域は、各ロボットの累積占有空間の交差である単なる空間となる。一つのロボットのみが一度にこの空間に入ることを許容することによって、干渉とデッドロックの両方を防止する。
【0065】
他の方法は、占有空間を時間の関数として決定することである。各時点において、各ロボットによって占有される空間が存在する。占有空間を特定の期間にわたる時間の積分として表すことによって、占有空間を、時間に関連した一連の離散空間として表すことができる。干渉領域は、同一時間又は時間間隔におけるロボットの交差となる。干渉を、一度に一つのロボットだけが干渉領域に存在できるようにすることによって回避することができる。相対的時間(relative time)がシーケンス制御により変化するので、時間基準を、シーケンス制御が行われた後に新たな時間に関連するように調整する必要がある。
【0066】
上述した時間に基づく方法に対して、時間を時間間隔数(time interval number)として表すことができる。この方法では、全経過時間は重要でなくなり、干渉領域を時間間隔数の行列として表すことができる。特定の時間間隔状態で干渉が存在する場合、当該時間間隔状態の発生を許容しないようにする必要がある。その理由は、当該時間間隔状態で衝突が生じうるからである。
【0067】
同様に、プログラムシーケンスを、行番号、完了の割合、プログラム状態等によって表すことができる。そのような任意のシーケンシャル表示に対して、選択されたパラメータの関数として規定された干渉を表示することができる。干渉を回避する目的は、干渉が存在する関数の集合の状態を回避することである。シーケンシャル離散間隔すなわちシーケンシャル状態として表すことができる関数に対して、これを、図8に示すような干渉行列として表すことができる。干渉行列は干渉領域を有する。当然、行列は、データを表す一つの方法にすぎないが、行列を、更に視覚的な表現にすることができる。一般的に、行列はスパースであり、任意のスパース行列技術を表示に適用することができる。
【0068】
I/O状態若しくは工程又は他の状態のような状態規定を、領域を規定するために用いることができる。状態がシーケンシャルな意味を有し又はロボット位置及び占有空間に関連したシーケンシャル動作を表すために規定できる限り、状態を干渉領域及びデッドロック領域のパラメータ表示に用いることができる。
【0069】
一度干渉行列が決定されると、デッドロックを防止する一つの方法は、干渉が順方向シーケンシング(forward sequencing)を妨害するシーケンス番号の単調増加の任意の「トラップ」を回避することである。干渉行列を上に凸(ascendingly convex)にすることによって、デッドロックと干渉の両方を回避することができる。このように上に凸である干渉行列を、デッドロック行列と称することができる。デッドロック行列は、図7に示すようなデッドロック領域を有する。干渉と同様に、デッドロック行列は、データを表す一つの方法にすぎない。
【0070】
一度デッドロック行列を決定するとデッドロック及び干渉を回避する多数の手段がある。最も簡単な手段は、デッドロック行列のデッドロック領域を回避するよう実行タイミングを調整するためにプログラムに命令を挿入することである。プログラムに命令を追加することは、実行タイミングの正確な性質を単なるプログラム観察だけによって決定できることである。他の手段は、実際のプログラム変更とは別にタイミングを決定することができる。
【0071】
干渉領域及びデッドロック領域のパラメータ規定は、干渉及びデッドロックを回避するための一般的な方法を提供する。このような領域の表示によって、種々の係数(factor)による種々のプログラム制御を可能にする。
【0072】
また、CPUの利用を減らすために、実際のプログラムを、デッドロック状態を回避するために必要な全ての情報がプログラムに含まれるように区分及びシーケンシャル情報を含むために更新することができる。これによって、プログラムシーケンス、干渉及びあり得るデッドロック状態をリアルタイムで確認する必要がなくなる。
【0073】
図11は、本発明のシステム及び方法によるデッドロック回避シーケンスの流れ図である。ステップ420において、プログラムをロボットコントローラ16,18に教示する。ステップ421において、占有空間を決定する。その後、ステップ422において、干渉領域を決定する。ステップ423において、あり得るデッドロック領域を決定する。ステップ424において、デッドロックを回避するためのプログラム実行要求を決定する。最後に、上述したように、デッドロックを回避するための機構をステップ425で決定する。
【0074】
ステップ423を、図12において更に詳細に示す。ステップ426において、占有空間及び全ての干渉領域を識別する。ステップ427において、各干渉領域の組合せを調べる。「デッドロック状態が存在するか」についての確認を、決定ステップ428で行う。結果がNOである場合、ステップ429において、ステップ423を終了する。結果がYESである場合、ステップ430は、デッドロックの発生を防止する手段を提供し、ステップ427に戻る。
【0075】
発明を説明するために所定の代表的な実施の形態及び説明を示したが、当業者は、以下で添付した請求の範囲で更に説明した開示の範囲から逸脱することなく種々の変更を行うことができることを理解する。
【技術分野】
【0001】
関連出願の相互参照
この出願は、2008年5月21日に出願された同時係属中の米国特許出願第12/124,430号の一部継続出願である。
【0002】
この出願は、2011年5月5日に出願された米国特許仮出願第61/482,808号の利益を主張する。
【0003】
本発明は、一般的には複数のロボットを制御するシステム及び複数のロボットの動作干渉回避を制御する方法に関する。
【背景技術】
【0004】
空間中の物体の動作は、典型的な製造環境における必要なタスクである。必要な動作を行うためにロボット工学がますます用いられるようになってきている。しかしながら、複数の物体を動作させるときに、物体間に干渉が生じることがある。物体が同一の座標系に対して同一の座標を有するときのように少なくとも二つの物体が同一の空間を同時に共有する場合、干渉がある。
【0005】
最近の産業用ロボットは相当な速度で動作するので、ロボット間の干渉によって衝突が生じ、ロボット及びロボットによって操作されるワークピースに不所望な損傷が加えられることがある。衝突により製造工程中に犠牲の大きい故障時間が生じることがある。したがって、そのような衝突を回避することが望ましい。
【0006】
従来のシステム及び方法は、干渉及び衝突を最小にするために用いられてきた。しかしながら、従来のシステム及び方法の複数の欠点が存在する。典型的には、工具中心点(TCP)は、予め決定された干渉エリアすなわち「静的空間」(static space)に対してのみ確認される。複数のロボットに対して、これらの衝突又は干渉を直ちに又は有効に防止するのは困難である。さらに、複数の動作するロボットの静止座標系に関する干渉空間を特定するのは困難である。任意の干渉空間はロボットの動作経路の関数であるだけでなく動作速度の関数でもある。二つ以上のロボットが共用空間で同時に動作することを要求するときのデッドロック状態を処理することを試みる際の困難もある。
【0007】
従来のシステムは、世界座標系に対する固定空間でロボットのTCPが衝突するのを防止する試みも行っている。(複数のコントローラを有する)複数のロボットがタスク実行中に共通空間すなわち「干渉」空間を共有するとき、各コントローラは、ロボットが共通空間に存在しなくなるまで待機する必要がある。この場合、コントローラは、ロボットに動作を許容するために動作制御コマンドを発することができる。この工程は、「待機及び動作」工程とも称され、一般的には作業サイクル時間を増大する。しかしながら、干渉空間はロボットの動作経路の関数であるだけでなく動作速度の関数でもあるので、固定座標系に対する干渉空間を有効に特定するのは困難である。一つを超えるロボットが共通空間で同時に動作することを要求するとき、ロボットは、ロボットが互いに待機するためにいずれのロボットも動作することができないデッドロック状態を作り出す。
【0008】
従来のシステムは、球及び円柱によってロボットのモデルを作る試みも行っている。従来のシステムは、リアルタイムでの動作中にロボットの将来の位置を予測する。従来のシステムは所定の時間に亘ってロボットによって占有される累積空間(accumulated space)を決定しないので、従来のシステムは、ロボットの動作中に頻繁に比較を行う必要がある。従来のシステムは、作業セルの全てのロボットのモデルを構成要素ごとに比較する。この比較は、計算コストが非常に高くなり、コストは、ロボット並びにロボット及び工具のモデルを作るのに用いられる構成要素の個数が増大するに従って飛躍的に高くなる。差し迫った衝突が検出されるときに比較がリアルタイムで行われるので、従来のシステムは、一般的には差し迫った衝突に伴う全てのロボットを停止させる必要があり、自動プログラム動作を中断する必要がある。従来のシステムは、ロボットが異なるコントローラに属するときに更に困難になる。その理由は、従来のシステムがコントローラ間でリアルタイムの通信を行うために多量の情報を必要とするからである。従来のシステムは、干渉を回避するためにI/Oハンドシェイク機構を利用する試みも行っている。本発明において、I/O PLCの必要はない。
【0009】
既知のシステム及び方法の一つは、譲受人による同時係属中の国際出願番号PCT/US2007/066638に開示されており、参照すにより全体がここに組み込まれる。かかるシステム及び方法は、ロボットの動作の効率を最大にするとともに複数のロボットの干渉又は衝突の可能性を最小にする「動的空間確認」(dynamic space check)システムを有する。各コントローラによって制御されるロボットは、ユーザによって定義された動的空間(user-defined dynamic space)でのみ動作し、これにより衝突を回避する。しかしながら、動的空間確認システムは、一般的にはユーザによって定義された直線で囲まれた空間(user-defined rectilinear space)に対してのみTCPを保護する。
【0010】
ロボットの衝突を回避する他の既知の方法は、Pollack等による米国特許第5,150,452号明細書で報告されている。この方法は、所望のロボットの動作を含む衝突マップを作成することを含む。排他的論理和演算においてロボットマップと「ワールド」マップとを組み合わせ、その後、排他的論理和演算において衝突マップと「ワールド」マップとを組み合わせるのに続いて包含的論理和演算において衝突マップと「ワールド」マップとを組み合わせることをバイト単位で行うことによって、所望のロボットの元の位置が「ワールド」マップから取り除かれる。衝突は、包含的論理和の組合せ及び排他的論理和の組合せの任意のビット位置の差によって表される。この方法は、衝突を検出するために2次元的なx−y投影(x-y projection)及び1次元的な高さを与えるが、3次元的なリアルタイムの衝突検出を行うことができない。
【0011】
ロボットと一つ以上の障害との間の衝突を衝突が生じる前に検出する更に別の既知の方法は、Greenspan等による米国特許第5,347,459号明細書に記載されている。ロボットは、ボクセル作業空間(voxelized workspace)において球によってモデルが作られる。作業空間中の各ボクセルには、最も近い障害からの距離に対応する値が割り当てられる。球の中心のボクセル値がボクセル中の他の球の半径より小さい場合には、衝突間近であると決定される。しかしながら、この方法は、単一のロボットアームを保護するだけである。ロボットは、球のみによってモデルが作られ、したがって、ロボットの重要な工程経路の保護には不十分である。
【0012】
複数のロボットの動作干渉回避を制御するシステム及び方法が引き続き必要となっている。望ましくは、システム及び方法は、3次元的なリアルタイムの衝突の検出を行い、ロボットシステムにロボットの動作を予め提供し、衝突のないプログラムされた軌跡を保存し、かつ、重要な工程経路を保護する。
【0013】
プログラム又はタスクが、プログラム又はタスクのいずれかの継続するシーケンシャル実行(continued sequential execution)の結果としてプログラム又はタスクに関連した一つ以上のロボット間に干渉が生じ、かつ、干渉なく順次に進行することができるプログラム又はタスクが存在しない状態になったとき、デッドロック状態が生じる。
【0014】
Chaffee等による米国特許第7,114,157号は、設定命令(set order)においてリソースを取得することによってデッドロックを回避する方法を記載している。この方法はデッドロックを回避することができるが、この方法は、設定デッドロックフリー命令(set deadlock-free order)が決定されなかった場合には動作を許可する能力がない。さらに、この方法は、要求された命令が規定のデッドロックフリー命令とは別である場合にはデッドロックフリーとすることができる動作を許可しない。
【0015】
Chang等による米国特許出願第2009/0326711号明細書は、自動的に又は手動でデッドロックを回避するために自動区分(automatic zone)を利用する方法を記載する。Changは、デッドロックを防止するために優先値(priority value)を使用する方法を示唆している。Changは、優先値を使用しない場合にデッドロックを防止する方法を示唆していない。
【発明の概要】
【発明が解決しようとする課題】
【0016】
本開示によれば、複数のロボットの動作干渉回避を制御するシステム及び方法であって、3次元的なリアルタイムの衝突の検出を行い、ロボットシステムにロボットの動作を予め提供し、衝突のないプログラムされた軌跡を保存し、かつ、I/Oハンドシェイク機構を利用することなく重要な工程経路を保護するシステム及び方法は、驚くべき発見である。
【課題を解決するための手段】
【0017】
一実施の形態において、共通の作業空間を有する1対のロボットのデッドロックを防止する方法であって、ロボットの各々は、関連のプログラムによって制御され、プログラムが同時に実行されるとき、ロボットの各々が、関連のプログラムの実行の一部の間に共通の作業空間の少なくとも一部を占有し、プログラムの同時実行中に、ロボットによって占有される共通の作業空間の部分を識別するステップと、共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、少なくとも一つのデッドロック状態となるロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、プログラムの実行中に少なくとも一つのデッドロック状態を回避するステップと、を備える。
【0018】
他の実施の形態において、共通の作業空間を有する1対のロボットのデッドロックを防止する方法を実行するためにコンピュータによって実行可能な命令を有するコンピュータ読出し可能媒体であって、ロボットの各々は、関連のプログラムによって制御され、プログラムが同時実行されるとき、ロボットの各々が、関連のプログラムの実行の一部の間に共通の作業空間の少なくとも一部を占有し、方法は、プログラムの同時実行中に、ロボットによって占有される共通の作業空間の部分を識別する命令と、共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別する命令と、少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別する命令と、少なくとも一つのデッドロック状態となるロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、プログラムの実行中に少なくとも一つのデッドロック状態を回避する命令と、を備える。
【0019】
他の実施の形態において、共通の作業空間を有する複数のロボットのデッドロックを防止する方法であって、ロボットの各々は、関連のプログラムによって制御され、プログラムが同時実行されるとき、ロボットの各々が、関連のプログラムの実行の一部の間に共通の作業空間の少なくとも一部を占有し、プログラムの同時実行中に、ロボットによって占有される共通の作業空間の部分を識別するステップと、ロボットの少なくとも二つのロボットについて共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、少なくとも一つの干渉領域を分析するとともに少なくとも二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、少なくとも一つのデッドロック状態となる少なくとも二つのロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、プログラムの実行中に少なくとも一つのデッドロック状態を回避するステップと、を備える。
【0020】
本発明によるシステム及び方法は、既知のデッドロックフリーシーケンスを必要としない。本発明によるシステム及び方法は、あり得るデッドロック状態を自動的に決定し、あり得るデッドロック状態を回避する方法を確定する。本発明によるシステム及び方法は、デッドロックを防止するための優先値を必要としない。本発明によるシステム及び方法は、干渉状態を防止するのと同時に、存在しうるデットロック状態を防止する。
【0021】
本発明の上記利点及び他の利点は、添付図面を考慮するときに好適な実施の形態の詳細の説明から当業者に明らかになる。
【図面の簡単な説明】
【0022】
【図1】ワークセル内で動作する第1のロボット及び第2のロボットを有する本開示による典型的なロボットシステムを示す。
【図2】本開示による干渉確認自動区分法を示す工程図である。
【図3】図1に示す第1のロボットと第2のロボットのうちの一方のボクセル化モデルを示す。
【図4】図3に示すボクセル化モデルの等角図である。
【図5】第1のロボットと第2のロボットのうちの一方を覆うボクセル化した球及び円柱によって形成されたボクセル化モデルを有する図1に示す第1のロボットと第2のロボットのうちの一方の拡大図を示す。
【図6】複数のボクセルから形成した図5に示すボクセル化球およびボクセル化円柱を示す。
【図7A】本発明によるデッドロックフリー行列及び関連のプログラムリストを示す。
【図7B】本発明によるデッドロックフリー行列及び関連のプログラムリストを示す。
【図7C】本発明によるデッドロックフリー行列及び関連のプログラムリストを示す。
【図8A】本発明による干渉行列及び関連のプログラムリストを示す。
【図8B】本発明による干渉行列及び関連のプログラムリストを示す。
【図8C】本発明による干渉行列及び関連のプログラムリストを示す。
【図8D】本発明による干渉行列及び関連のプログラムリストを示す。
【図9】複数のデッドロック領域を組み合わせて単一のデッドロックフリー領域にする経路及び関連の表を示す。
【図10】本発明によるデッドロック防止を行わない複数のロボットプログラム実行シーケンス及び本発明によるデッドロック防止を行う複数のロボットプログラム実行シーケンスを示す。
【図11】本発明によるデッドロック回避シーケンスの流れ図である。
【図12】本発明によるあり得るデッドロック領域を決定するための流れ図である。
【発明を実施するための形態】
【0023】
以下の説明は、本質的には単なる例示であり、この開示、この出願又は使用を制限することを意図しない。図面中、対応する参照番号が同様な又は対応する部分及び特徴を表すことを理解すべきである。開示した方法に関して、示したステップは、本質的には例示であり、したがって、必須でも重要でない。
【0024】
図1は、複数のロボット間の衝突回避を制御するロボットシステム2を示す線形図である。限定されない例として、ロボットシステム2を、少なくとも二つのロボットを有するボディーショップロボットシステム(body shop robot system)、ウォータジェット切断ロボットシステム(waterjet cutting robot system)、レーザ溶接ロボットシステム、アーク溶接ロボットシステム及び塗装ロボットシステムのうちの一つとすることができる。所望に応じて、複数のロボットを有する他のロボットシステム2を用いることもできる。
【0025】
ロボットシステム2は、第1のロボット6及び第2のロボット8が動作するように構成されるエンベロープ(envelope)を規定するワークセル4を有する。第1のロボット6及び第2のロボット8は、ワークセル4内に配置された少なくとも一つの共通空間10を選択的に占有するように構成される。第1のロボット6及び第2のロボット8のみを示すが、当然のことながら、ロボットシステム2は、開示の範囲及び精神から逸脱することなく2を超える数のロボットを有することができる。
【0026】
第1のロボット6は、第1のプログラム経路(programmed path)に沿った第1のロボット6の動作中に共通空間10の第1の部分12を占有することができる。第2のロボット8は、第2のプログラム経路に沿った第2のロボット8の動作中に共通空間10の第2の部分14を占有することができる。第1の部分12及び第2の部分14は、「自動区分」(automatic zone)又は「自動ゾーン」(autozone)としても知られている。各プログラム経路は、一つ以上の自動区分を備え、各自動区分は、予め処理され、一つ以上の動作ステートメントから取得される。第1のプログラム経路及び第2のプログラム経路を、例えば、複数の動作ステートメントを有する一連の命令中の一つ以上の動作ステートメントによって制御することができる。当業者は、第1のロボット6及び第2のロボット8の動作を制御する干渉回避方法を用いない場合には第1の部分12及び第2の部分14が重なることがあるためにロボットの干渉の可能性があることを理解すべきである。
【0027】
第1のロボット6及び第2のロボット8は、少なくとも一つのコントローラ16,18によって制御される。図1に示す実施の形態において、第1のロボット6は、第1のコントローラ16によって制御され、第2のロボット8は、第2のコントローラ18によって制御される。少なくとも一つのコントローラ16,18は、電源(図示せず)と電気的なやり取りを行うように適合される。コントローラ16,18は、コントローラ16,18内にあるコンピュータプログラムのような一連の命令を実行することができる。他の実施の形態において、一連の命令は、コントローラ16,18とやり取りを行うコンピュータ読出し可能媒体又はメモリに存在することができる。
【0028】
ロボットシステム2は、種々のシステム構成要素に接続するように構成されたネットワーク媒体(図示せず)、プログラマブル論理装置(図示せず)及び少なくとも一つのコントローラ16,18と電気的なやり取りを行う教示装置(teaching device)20のうちの少なくとも一つのような従来既知の他の構成要素を更に有することができる。特定の実施の形態において、教示装置20は、モニタを有することができ、所望に応じてロボットシステム2のオペレータが観察するために、第1のロボット6、第2のロボット8、共通空間10の第1の部分12及び共通空間10の第2の部分14を映像によって表すように構成される。教示装置20は、ロボットのジョグ操作を行うための一連の命令を行う(initiate)手段を有することもできる。
【0029】
本開示による典型的な一連の命令を図2に示す。一連の命令は、干渉確認自動区分法(interference check automatic zone method)200を有する。干渉確認自動区分法200は、先ず、ワークセル4内に少なくとも一つの共通空間10を設ける開始ステップ202を有する。開始ステップ202の後に第1の決定ステップ204及び第2の決定ステップ206が続く。第1の決定ステップ204は、第1のプログラム経路に沿った第1のロボット6の動作中に占有される共通空間10の第1の部分12の決定を含む。第2の決定ステップ206は、第2のプログラム経路に沿った第2のロボット8の動作中に占有される共通空間10の第2の部分14の決定を含む。当然のことながら、第1の部分12及び第2の部分14を、自動的に、すなわち、従来知られているような各ロボットの動作のユーザ指定区分を必要とすることなく決定することができる。その後、第1の部分12及び第2の部分14は、これらの間に重なり210が存在するか否かを決定するために比較ステップ208で比較される。
【0030】
限定されない例として、第1の決定ステップ及び第2の決定ステップを、第1のロボット6及び第2のロボット8を有するロボットシステム2の開始動作中に実質的にリアルタイムで行うことができる。開始動作を、第1のロボット6と第2のロボット8との任意のあり得る衝突を回避するためにロックダウンモード(lockdown mode)において第1のロボット6及び第2のロボット8によって行うことができる。他の例において、第1の決定ステップ204及び第2の決定ステップ206を、例えば、リアルタイム動作中にロボット6,8によって占有することができる共通空間10の第1の部分12及び第2の部分14を識別するために第1のプログラム経路及び第2のプログラム経路のオフライン実行(offline run)により行うことができる。第1の決定ステップ204及び第2の決定ステップ206中に識別された第1の部分12及び第2の部分14を、例えば、メモリに保持し、第1のロボット6及び第2のロボット8の次の動作中に再利用することができる。その結果、第1のロボット6及び第2のロボット8の衝突に影響を及ぼすために第1のロボット6及び第2のロボット8の動作のプログラム経路すなわち軌道が予め処理されるとともに保持されることを理解すべきである。
【0031】
第1のロボット6及び第2のロボット8の第1の移動ステップ212及び第2の移動ステップ214は、重なり210の存在に応じて選択される。第1の部分12と第2の部分14との間に重なり210が存在する場合、ロボット6,8の衝突の可能性があり、第1の移動ステップ212が選択される。第1の移動ステップ212は、第1のプログラム経路に沿う第1のロボット6と第2のプログラム経路に沿う第2のロボット8のうちの一方のみの移動を含む。第1の部分12と第2の部分14との間に重なり210が存在しない場合、ロボット6,8の衝突の可能性がなく、第2の移動ステップ214が選択される。第2の移動ステップ214は、第1のプログラム経路に沿う第1のロボット6の移動及び第2のプログラム経路に沿う第2のロボット8の移動を含む。
【0032】
第1の決定ステップ204及び第2の決定ステップ206を、従来既知の任意の手段によって行うことができる。本開示による一つの特定の実施の形態において、第1の決定ステップ204及び第2の決定ステップ206は、図3〜6に実例で示すような少なくとも一つのボクセル302を有する少なくとも一つのボクセルモデル300を有する共通空間10、第1の部分12及び第2の部分14のうちの少なくとも一つを表すステップを有することができる。ボクセル302は、3次元空間において規則的なグリッド上に値を表すボリュームエレメント(volume element)である。比較ステップ208は、例えば、第1の部分12を表す第1のボクセルモデル300と第2の部分14を表す第2のボクセルモデル300との間に重なり210が存在するか否かを決定するステップを有することができる。ボクセル300は、一般的には第1のロボット6及び第2のロボット8の基部、アーム及び工具のような種々の構成要素の形状を近似する複数のボクセル302によって表される。
【0033】
図3及び図4を参照すると、実例のボクセルモデル300は、X軸、Y軸及びZ軸に沿った座標に配置された複数のボクセルを有することができる。ボクセルモデル300は、第1のロボット6と第2のロボット8の少なくとも一方によって占有される共通空間10の3次元ボリュームを表現するよう構成される。ボクセルモデル300を、生成されるデータファイルの形態にすることができ、例えば、コントローラ16,18、他のコンピュータ読取可能媒体又は他のメモリに保存することができる。所定の実施の形態において、ボクセルモデル300は、動的であり、ロボットの一連の動作に関連した複数のモデル300を有する。動的なボクセルモデル300を、第1のロボット6と第2のロボット8の少なくとも一方の動作中に占有される共通空間10の3次元ボリュームを表現するために用いることができる。各自動区分を、ボクセルモデル300の複数のスナップショット(snapshot)の累積/重ね合わせ(accumulation/superimposition)から取得し、各スナップショットは、一つ以上のITP間隔から取り出される。
【0034】
図5及び図6を参照すると、第1のロボット6及び第2のロボット8のボクセルモデル300は、第1のロボット6及び第2のロボット8によって占有された3次元ボリュームを表すためにボクセル化された球500及びボクセル化された円柱502のうちの少なくとも一方を有することができる。ここで更に説明するように、ボクセル化された球500及びボクセル化された円柱502は、第1のロボット6及び第2のロボット8の基部、アーム及び工具のような種々の構成要素を表すことができる。ボクセル化された球500及びボクセル化された円柱502は、一般的には第1のロボット6及び第2のロボット8の一般的な形状及び境界を近似するために相互配置された複数のボクセル302を有する。
【0035】
当業者は、ボクセル化された球500及びボクセル化された円柱502を任意の適切な手段によって生成することができることを理解すべきである。例えば、ボクセル化された球500を、ロボット6,8の構成要素を表す典型的な球をX−Y平面に投影することによって近似することができる。この場合、球を包囲する最も小さい円柱Aが識別される。その後、同一の球をY−Z平面に投影し、球を包囲する最も小さい円柱Bを識別する。その後、同一の球をZ−X平面に投射し、球を包囲する最も小さい円柱Cを識別する。その後、ボクセル化された球500は、円柱A、円柱B及び円柱Cの交差を識別することによって近似される。
【0036】
他の実施の形態において、ボクセル化された球500を、ロボット6の構成要素及びロボット8の構成要素を表す球を包囲する最小のボックスを最初に見つけることによって近似することができる。ボックスは、ボリューム占有Aを有する。ボックスAの内側にあるとともに球の外側にあるボクセルボリューム占有Bが識別される。その後、ボクセル球500は、値Aから値Bを減算することによって近似される。
【0037】
ボクセル化された球500を、典型的な球とX−Y平面との交差を識別することによって近似することもできる。交差は、Z軸沿いに球の中心を有し、交差した円形プレートA1を形成する。円形面A1には任意の高さが割り当てられ、その後、交差した円形プレートA1のボクセルの占有が識別される。さらに、円形プレートA2,A3,...,A(n)を、典型的な球とX−Y平面の交差をZ軸に沿ってシフトすることによって決定し、これらのボリューム占有が同様に識別される。その後、ボクセル化された球500は、典型的な球の円形プレートに対して識別されたボクセル占有の各々を統合することによって近似される。
【0038】
ボクセル化された円柱502を、左半球/全球のボクセル占有Aを識別し、右半球/全球のボクセル占有Bを識別し、左半球と右半球との間の複数の円形プレートのボクセル占有Cを識別することによって近似することができる。この場合、基線に垂直な円形基板が形成される。基線は、円柱の両端で二つの半球を接続する。次に、円形面を、円形基板をZ軸に沿ってシフトすることによって取得することができる。基線のボクセル占有を計算し、次に、二つの半球間の全領域を満たすために基線をシフトすることもできる。次に、ボクセル化された円柱502を、ボクセル占有A、ボクセル占有B及びボクセル占有Cの各々を統合することによって近似する。
【0039】
ボクセル化された円柱502を近似する他の方法は、ロボットの構成要素を表す典型的な円柱を包囲することができる最小のボックスを最初に識別することを含む。ボックスはボリューム占有Aを有する。その後、ボックスの内側にあるとともに円柱の外側にあるボクセルボリューム占有Bが識別される。次に、ボクセル化されたシリンダ502を、ボクセルボリューム占有Aからボクセル占有Bを減算することによって近似する。当業者は、ロボット6,8の構成要素を表すボクセル化された球500及び円柱502を近似するのに適切な他の手段を所望に応じて用いることができることを理解すべきである。
【0040】
ボクセル化(voxelization)を、ロボット、アームドレスアウト(arm dressout)及びツーリング(tooling)を表すことができる任意のCAD表面又はボリューム(CAD surface or volume)から同様にして決定することもできる。
【0041】
ボクセル化は、ロボットの動作セグメント(motion segment)によって占有される空間を表すのに非常に有効な方法である。ボクセル化工程は、ボクセル化された空間を形成するためにある程度の計算オーバーヘッド(computational overhead)を有するが、ランタイムコンポーネント(run-time component)は非常に有用である。一度空間がボクセル化されると、動作経路中にロボットによって占有される共通空間の複雑さの程度又は量に関係なくボクセル化された空間に要求される最大の記憶容量は固定される。ボクセル化された空間の間の干渉のランタイム確認は非常に有効である。好適な実施の形態は、ボクセル化された領域によって表すために干渉確認自動区分を提供するが、動作経路中にロボットによって占有される空間のボリューム又は表面を表す任意の方法を用いることができる。
【0042】
他の実施の形態は、プログラムされた動作中、ジョグ操作によって開始される動作中又は他の手段によって開始される動作中の衝突を回避する。他の実施の形態は、動作中のロボットを、ワークセル中の静止しているロボット、他の固定された物体又は他の規定された領域への衝突から保護する。プログラムされた動作に対して、ボクセル化工程又は他の干渉確認自動区分モデル化工程を、オフライン中又はテストラン中に行うことができ、ボクセル化されたデータは、後の探索のために効率的に格納される。この工程を、新たな動作経路が新たなプログラム、ロボットのジョグ操作又は他の手段によって開始される動作から決定されるときにリアルタイムで行うこともできる。これらの場合に対して、一連の命令を、教示装置の使用又は動作を開始する他の手段によって決定することができる。実際の動作は、工程が完了するとともにこの干渉確認自動区分及び他の占有された干渉確認自動区分による干渉がなくなるまで開始するのを許可されない。
【0043】
他の実施の形態において、共通空間10の第1の部分12及び第2の部分14の少なくとも一方は、第1のロボット6及び第2のロボット8の少なくとも一方に取り付けられたツーリングによって占有されるツーリング空間(tooling space)及びドレスアウトアッセンブリ(dressout assembly)(例えば、アークツールワイヤフィーダ(ArcTool wire feeder))を有することができる。重なり210を決定するステップは、第1の部分12及び第2の部分14の少なくとも一方とロボット以外の障害(non-robot obstacle)(図示せず)によって占有される共通空間10の第3の部分との比較を含むこともできる。障害を、所望に応じて共通空間10の寸法、形状及び位置を規定するのに用いられるパラメータのセットによって手動で特定することができる。他の例において、方法200は、障害によって占有される共通空間10の第3の部分を決定するステップを更に有することができる。ロボット以外の障害によって占有される共通空間の第3の部分を所望に応じて同様なボクセルモデル300のボクセル302によって表すこともできることを理解すべきである。
【0044】
本開示の方法200は、第1のプログラム経路に沿った第1のロボット6の動作及び第2のプログラム経路に沿った第2のロボット8の動作の少なくとも一方の後に共通空間10の非占有部分を決定するステップを更に有することもできる。この場合、共通空間10の非占有部分を、所望に応じて他のプログラム経路すなわち軌道に従う他のロボットによって使用できるようにする。他の実施の形態において、方法200は、本開示の方法200による他の使用のために共通空間10の第1の部分12及び第2の部分14の座標を少なくとも一つのコントローラ16,18に移すステップを有することができる。この場合、コントローラ16,18は、ここで説明した第1の決定ステップ204及び第2の決定ステップ206の少なくとも一方を行うとともに座標を第1の部分12及び第2の部分14を表すボクセルモデル300に変換するために用いることができる。
【0045】
当業者は、共通空間10の第1の部分12と第2の部分14との間に重なりが存在するか否かを決定する際に第1のロボット6の動作と第2のロボット8の動作のそれぞれを優先値によって決定できることを理解すべきである。限定されない例として、第1のロボット6及び第2のロボット8の優先値は、先入れ先出しシステムに基づくことができる。他の例において、第1のロボット6及び第2のロボット8の一方は、常に第1のロボット6及び第2のロボット8の他方よりも高い優先値を有することができる。高い優先値は、ロボットシステム2のロボット6,8の優先度に対する予め決定されたユーザ設定に基づくことができる。他の例において、優先値を、共通空間10内の非占有部分の利用可能性に基づいて選択することができる。当業者は、所望に応じて第1のロボット6及び第2のロボット8に対して所望の優先値を割り当てることができる。
【0046】
他の実施の形態において、方法200は、デッドロック状態となり得る重なり210の存在に対する複数のプログラム経路を分析するステップを更に有することができる。次に、デッドロック状態の発生に影響を及ぼすために複数のプログラム経路の動作シーケンスを所望に応じて調整することができる。動作シーケンスを、例えば、所望に応じて優先値に基づいて手動で又は自動的に調整することができる。
【0047】
当然のことながら、本開示の干渉確認自動区分システム2及び方法200は、従来のマルチアームロボットシステムよりも優れた利点を提供することができる。システム2及び方法200は、3次元的なリアルタイムの衝突回避を行う。システム2は、最小のプログラミングしか必要としない。その理由は、システム2が干渉区域の特定又は教示の必要に影響を及ぼすからである。これによって、生産休止時間も減少する。
【0048】
当業者は、ボクセル化された球500及び円柱502を使用することによって典型的にはロボットモデルの生成に関連した処理要求を最小にすることも理解すべきである。第1のロボット6及び第2のロボット8の動作は、例えば、ボクセルモデル300のオフライン生成によってシステム2に予め伝達される。同様に、第1のロボット6及び第2のロボット8のプログラム経路すなわち軌道は、衝突なく保持される。工程経路は、切断、溶接、研削、ルーティング(routing)、塗装、分配(dispensing)等のアプリケーション工程(application process)又は他の同様な工程を行う間の一連の動作である。一度工程が開始されると全体の工程経路を中断なく完了することは、一般的には重要である。当然のことながら、第1のロボット6及び第2のロボット8の重要な工程経路も本方法200によって同様に保護される。
【0049】
システム2は、所望に応じて同一のコントローラ16,18内及び複数のコントローラ16,18間の複数のロボットアームの衝突の回避をサポートする。さらに、システム2及び方法200は、簡単なロボット形態を提供し、所定の従来のシステム及び方法で行われるようなI/Oハンドシェイクプロトコルの必要に影響を及ぼす。干渉確認自動区分システム2及び方法200は、複数のアーム干渉確認の形態を簡単化し、複数のロボットアームのデッドロックに影響を及ぼす。
【0050】
干渉防止及びデッドロック防止は密接な関係がある。干渉は、二つのロボットが同一の物理的な空間を占有することを試みるときに生じる。干渉を防止する一つの方法は、現在の動作コマンドにおいて全てのロボットによって占有されている又は将来占有される空間の確認及び干渉が生じる前の一つ以上のロボットの停止を伴う。このタイプの干渉防止は、停止しているロボットの一つ以上が他のロボットによって必要である又は将来必要とされる空間を現在占有しているとともに他のロボットにより妨害され続けているために停止しているロボットが始動できないときにデッドロックが生じる傾向が非常に高いという重大な不都合を有する。
【0051】
干渉を防止する他の方法は、ロボットプログラムに開始区分コマンド及び終了区分コマンド(enter and exit zone commands)をプログラム的に(programmatically)挿入することによって設定することである。これらのコマンドは、一つのロボットだけが一度に特定区分を占有できるようにすることを容易にするためにPLC又は他のロボットとやり取りを行う。単一の区分に対して、ほとんど影響がない。主要な問題は、利用可能となっているときに複数のロボットが待機中である場合に誰が区分を取得するかという優先度の一つである。しかしながら、複数の区分に対して、デッドロックが非常に生じやすくなっている。例えば、隣接する区分に対して、各ロボットが現在一つの区分を占有するとともに次の動作が他のロボットに占有されている区分内で行われるか否かを知ることは容易である。この場合、各ロボットは、他のロボットが所望の区分をあきらめるのを永久に待つ。デッドロック状態が生じる。
【0052】
本発明によるシステム及び方法は、起こりうるデッドロック状態を有する動作を実行する前にデッドロックフリー動作ステートメントを決定することによって上述した場合におけるデッドロック状態を除外する。デッドロックフリー動作ステートメントの決定を、オフラインで、通常の実行とは別に又は通常の製造の実行中に行うことができる。十分なCPU処理時間を利用できる場合、通常の製造の実行中の決定は、I/Oタイミングの変化又は外部イベント若しくはシーケンスのタイミングの変化のような動的な条件に応答するのに最大の適応性を与える。最小のCPUの影響に対して、決定はオフラインで行われ、この場合、プログラムシーケンス(programming sequence)の多数の順列(permutation)を分析することができ、最適化された実行のシーケンスを見つけることができる。
【0053】
本発明によるシステム及び方法は、既知のデッドロックフリーシーケンス(deadlock-free sequence)を必要としない。システム及び方法は、起こりうるデッドロック状態を自動的に決定し、起こりうるデッドロック状態を回避する方法を特定することができる。システム及び方法は、デッドロックを回避するために優先値を必要としない。システム及び方法は、干渉状態を防止し、同時に、デッドロック状態の可能性が存在しないようにする。
【0054】
第1のロボットによって実行される「元のプログラムA」のリスト401の行番号及び第2のロボットによって実行される「元のプログラムB」のリスト403の行番号の「デッドロックフリー行列」400を、図7に示す。行列400の網掛けセルは、デッドロックフリー領域を規定する上方向の凸包(ascending convex hull)を表す。網掛けセルの大部分は、一方のプログラムの行i−1から行iまでの経路及び他方のプログラムの行j−1から行jまでの経路の進行中に干渉を有するプログラム行の対を表す。残りのセルは、上方向の凸包を完成することが要求される。行列400のセルを、(i,j)の形式で指定することができ、この場合、iは、プログラムAの行番号であり、jは、プログラムBの行番号である。したがって、干渉セルは、(3,6;3,7;4,5;4,6;4,7;5,4;5,5;5,6;5,7)であり、残りのセルは、(3,4;3,5;4,4)である。
【0055】
例えば、プログラムAが行3にあり、プログラムBが行5にある場合、デッドロック状態が存在する。その理由は、Aが行4に移動することを試みる場合、行5でBとの干渉があり、Bが行6に移動することを試みる場合、行3でAとの干渉があるからである。したがって、いずれのロボットも進行することができない。Aの行3から行5まで及びBの行4から行7までのデッドロック区分を完成することによって、一方のプログラムA又はBのみが一度にこの区分を占有することができる。これは、「新たなプログラムA」のリスト402及び「新たなプログラムB」のリスト404に示すようなプログラムの例においてZONE[1]として識別される。
【0056】
図8は、「干渉行列」405を三つのデッドロックフリー区分:ZONE[1],ZONE[2],ZONE[3]に細分することができる例を示す。干渉セルは、(3,3;3,4;3,5;3,6;3,7;4,5;4,6;4,7;5,4;5,5;5,6;5,7:6,6;6,7)である。ZONE[1]は、セル(3,3;3,4;3,5;3,6;3,7)を有する。ZONE[2]は、セル(4,5;4,6;4,7;5,4;5,5;5,6;5,7)を有する。ZONE[3]は、(6,6;6,7)を有する。上方向の凸包は、三つの凸包を形成できるようにするとともに全領域が上に凸となるように、仮想的な干渉であるセル(4,4)を通じて形成される。三つの区分は、「新たなプログラムA」リスト406及び「新たなプログラムB」リスト407に組み込まれる。任意の干渉のない行の対の組合せにおいて少なくとも一つのプログラムが干渉なく次の行に進むことができる場合はない。
【0057】
図9は、デッドロックが存在しうる複数の干渉領域及び二つのデッドロック領域を有するプログラムの対の例を示す。「プログラムA」は、行3から行15までの経路409を進む。「プログラムB」は、行9から行21までの経路410を進む。プログラムは、経路及び表413に示すような第1のデッドロック領域412及び第2のデッドロック領域411を有する。単一のデッドロック領域を形成する簡単な方法は、全ての干渉領域及び介在する非干渉領域を組み合わせて表414に示すような単一の領域にすることであり、この領域は、もともとデッドロックがない。
【0058】
図10は、「プログラムA」及び「プログラムB」をそれぞれ実行するロボット6,8の五つのシーケンスを示す。最も左にある第1のシーケンスにおいて、ロボット6は、ロボット8が動作することなく「プログラムA」を実行する。右側の次のシーケンスにおいて、ロボット8は、ロボット6が動作することなく「プログラムB」を実行する。真ん中のシーケンスにおいて、ロボット6,8は、各プログラムを同時に実行し、衝突が生じる。右側の次のシーケンスは、デッドロックが生じる従来の干渉回避を行いながら各プログラムを同時に実行するロボット6,8を示す。最も右側のシーケンスは、本発明によるデッドロック防止を行いながら各プログラムを同時に実行するロボット6,8を示し、両プログラムは、干渉なく完了する。
【0059】
上述したシステム及び方法は、衝突の防止とあり得るデッドロックの処理の両方を行うためにプログラムステートメントを自動的に追加及び/又は修正する。一部のケースにおいて、発される自動待機コマンドによって、全体のサイクル時間を所定のジョブのために増大させる。サイクル時間の増大が許容されない場合、本発明によるシステム及び方法は、ロボットが停止することなくプログラムを実行することができる再設定経路(re-sequenced path)を推奨又は自動的に形成する。すなわち、二つのロボットが一度に同一空間を占有する予定である経路の部分が存在する場合、システム及び方法は、この状態を除去するために新たな経路シーケンス(溶接を想定した場合には、異なる順序のスポット)を自動的に推奨する。このようにプログラム命令を再設定する特徴は、塗装屋の塗布に用いることができる。
【0060】
条件実行ステートメントがプログラム中に生じる場合、分析は、シーケンシャル実行の全ての組合せを含むことができる。又は、簡単のために、条件分岐領域に含まれるプログラムセグメントを、独立したものとして扱うことができる。典型的には、ロボットプログラマは、そのような条件領域を教示し、領域に対する入力経路及び領域に対する出力経路が他のロボットとの干渉を有さなくするとともに独立した扱いを実用的にできるようにする。しかしながら、条件領域に対する入力経路及び条件領域に対する出力経路が他のロボットとの干渉を有する場合、干渉のないこと及びデッドロックのないことを保証するために条件領域及び非条件領域の複数の組合せを分析する。
【0061】
この方法の利点の一つは、デッドロック状態を除去することができる機構と同一の機構が通常のプログラム動作中に干渉も除去できることである。したがって、ロボット間の干渉のリアルタイムの確認を、通常プログラム動作中に除去することができる。これは、処理時間を更に高い補間速度すなわち更に短い補間時間のような他の目的のために用いることができる著しいCPU利用を確保することができる。エラー状態中すなわちプログラムが実行されないとき、「3次元自動区分によるマルチアームロボットシステム干渉確認」(Multi-Arm Robot System Interference Check Via Three Dimensional Automatic Zones)の表題の同時係属中の米国特許出願第12/124,430号で提案されているようなCPUの使用が少ない干渉確認を、干渉を防止するために用いることができる。
【0062】
プログラムによって占有される空間を、物理的な空間、時間、プログラムシーケンス、行番号、プルグラム若しくは行の完了の割合又はロボット、プログラム若しくはシステムに関連した状態変化の関数とすることができる。干渉領域及びデッドロック領域は、占有空間を規定する関数と同一の関数によって関連付けられる。
【0063】
デッドロックを回避する方法をさまざまな形で実行することができる。最も簡単な方法は、図9に示すようにデッドロック及び干渉を防止するよう干渉領域を展開する(expand)ことである。全プログラムに対して一つの干渉領域のみが存在するように干渉領域を展開することは、システムがデッドロックフリーになることを保証するが、サイクル時間が重要である場合、シーケンス制御の一部のソート及び/又は複数の干渉領域を用いることができる。他の方法は、デッドロックを防止するために干渉領域外に実行シーケンスを設けることである。これを、第1のロボットが進行する前にデッドロック状態が存在しうるプログラム実行の一部を完了するために第1のロボットが第2のロボットを待機することによって簡単に行うことができる。
【0064】
占有空間を決定することができる複数の方法がある。最も簡単な方法は、占有面積を純粋にプログラム実行中にロボットによって占有される累積空間(cumulative space)とすることである。複数のロボットがこのように決定された占有空間を有するとき、干渉領域は、各ロボットの累積占有空間の交差である単なる空間となる。一つのロボットのみが一度にこの空間に入ることを許容することによって、干渉とデッドロックの両方を防止する。
【0065】
他の方法は、占有空間を時間の関数として決定することである。各時点において、各ロボットによって占有される空間が存在する。占有空間を特定の期間にわたる時間の積分として表すことによって、占有空間を、時間に関連した一連の離散空間として表すことができる。干渉領域は、同一時間又は時間間隔におけるロボットの交差となる。干渉を、一度に一つのロボットだけが干渉領域に存在できるようにすることによって回避することができる。相対的時間(relative time)がシーケンス制御により変化するので、時間基準を、シーケンス制御が行われた後に新たな時間に関連するように調整する必要がある。
【0066】
上述した時間に基づく方法に対して、時間を時間間隔数(time interval number)として表すことができる。この方法では、全経過時間は重要でなくなり、干渉領域を時間間隔数の行列として表すことができる。特定の時間間隔状態で干渉が存在する場合、当該時間間隔状態の発生を許容しないようにする必要がある。その理由は、当該時間間隔状態で衝突が生じうるからである。
【0067】
同様に、プログラムシーケンスを、行番号、完了の割合、プログラム状態等によって表すことができる。そのような任意のシーケンシャル表示に対して、選択されたパラメータの関数として規定された干渉を表示することができる。干渉を回避する目的は、干渉が存在する関数の集合の状態を回避することである。シーケンシャル離散間隔すなわちシーケンシャル状態として表すことができる関数に対して、これを、図8に示すような干渉行列として表すことができる。干渉行列は干渉領域を有する。当然、行列は、データを表す一つの方法にすぎないが、行列を、更に視覚的な表現にすることができる。一般的に、行列はスパースであり、任意のスパース行列技術を表示に適用することができる。
【0068】
I/O状態若しくは工程又は他の状態のような状態規定を、領域を規定するために用いることができる。状態がシーケンシャルな意味を有し又はロボット位置及び占有空間に関連したシーケンシャル動作を表すために規定できる限り、状態を干渉領域及びデッドロック領域のパラメータ表示に用いることができる。
【0069】
一度干渉行列が決定されると、デッドロックを防止する一つの方法は、干渉が順方向シーケンシング(forward sequencing)を妨害するシーケンス番号の単調増加の任意の「トラップ」を回避することである。干渉行列を上に凸(ascendingly convex)にすることによって、デッドロックと干渉の両方を回避することができる。このように上に凸である干渉行列を、デッドロック行列と称することができる。デッドロック行列は、図7に示すようなデッドロック領域を有する。干渉と同様に、デッドロック行列は、データを表す一つの方法にすぎない。
【0070】
一度デッドロック行列を決定するとデッドロック及び干渉を回避する多数の手段がある。最も簡単な手段は、デッドロック行列のデッドロック領域を回避するよう実行タイミングを調整するためにプログラムに命令を挿入することである。プログラムに命令を追加することは、実行タイミングの正確な性質を単なるプログラム観察だけによって決定できることである。他の手段は、実際のプログラム変更とは別にタイミングを決定することができる。
【0071】
干渉領域及びデッドロック領域のパラメータ規定は、干渉及びデッドロックを回避するための一般的な方法を提供する。このような領域の表示によって、種々の係数(factor)による種々のプログラム制御を可能にする。
【0072】
また、CPUの利用を減らすために、実際のプログラムを、デッドロック状態を回避するために必要な全ての情報がプログラムに含まれるように区分及びシーケンシャル情報を含むために更新することができる。これによって、プログラムシーケンス、干渉及びあり得るデッドロック状態をリアルタイムで確認する必要がなくなる。
【0073】
図11は、本発明のシステム及び方法によるデッドロック回避シーケンスの流れ図である。ステップ420において、プログラムをロボットコントローラ16,18に教示する。ステップ421において、占有空間を決定する。その後、ステップ422において、干渉領域を決定する。ステップ423において、あり得るデッドロック領域を決定する。ステップ424において、デッドロックを回避するためのプログラム実行要求を決定する。最後に、上述したように、デッドロックを回避するための機構をステップ425で決定する。
【0074】
ステップ423を、図12において更に詳細に示す。ステップ426において、占有空間及び全ての干渉領域を識別する。ステップ427において、各干渉領域の組合せを調べる。「デッドロック状態が存在するか」についての確認を、決定ステップ428で行う。結果がNOである場合、ステップ429において、ステップ423を終了する。結果がYESである場合、ステップ430は、デッドロックの発生を防止する手段を提供し、ステップ427に戻る。
【0075】
発明を説明するために所定の代表的な実施の形態及び説明を示したが、当業者は、以下で添付した請求の範囲で更に説明した開示の範囲から逸脱することなく種々の変更を行うことができることを理解する。
【特許請求の範囲】
【請求項1】
共通の作業空間を有する1対のロボットのデッドロックを防止する方法であって、前記ロボットの各々は、関連のプログラムによって制御され、前記プログラムが同時に実行されるとき、前記ロボットの各々が、前記関連のプログラムの実行の一部の間に前記共通の作業空間の少なくとも一部を占有し、
前記プログラムの同時の実行中に、前記ロボットによって占有される前記共通の作業空間の部分を識別するステップと、
前記共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、
前記少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、
前記少なくとも一つのデッドロック状態となる前記ロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、前記プログラムの実行中に前記少なくとも一つのデッドロック状態を回避するステップと、
を備えることを特徴とする方法。
【請求項2】
前記プログラムの通常の生産の実行中に前記決定及び実行を行う請求項1に記載の方法。
【請求項3】
前記少なくとも一つのデッドロックフリー動作ステートメントを前記プログラムの少なくとも一つに追加する請求項1に記載の方法。
【請求項4】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある少なくとも一つの命令を変更することによって与える請求項1に記載の方法。
【請求項5】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある命令を並べ直すことによって与える請求項1に記載の方法。
【請求項6】
前記少なくとも一つのデッドロックフリー動作ステートメントを、少なくとも一つのプログラムのプログラム命令に依存しないプログラムの少なくとも一つの実行を制御することによって与える請求項1に記載の方法。
【請求項7】
前記共通の作業空間の占有された部分をボクセルモデルで表し、前記少なくとも一つの干渉領域を識別するために前記ボクセルモデルを比較する請求項1に記載の方法。
【請求項8】
共通の作業空間を有する1対のロボットのデッドロックを防止する方法を実行するためにコンピュータによって実行可能な命令を有するコンピュータ読出し可能媒体であって、前記ロボットの各々は、関連のプログラムによって制御され、前記プログラムが同時に実行されるとき、前記ロボットの各々が、前記関連のプログラムの実行の一部の間に前記共通の作業空間の少なくとも一部を占有し、前記方法は、
前記プログラムの同時の実行中に、前記ロボットによって占有される前記共通の作業空間の部分を識別する命令と、
前記共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別する命令と、
前記少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別する命令と、
前記少なくとも一つのデッドロック状態となる前記ロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、前記プログラムの実行中に前記少なくとも一つのデッドロック状態を回避する命令と、
を備えることを特徴とするコンピュータ読出し可能媒体。
【請求項9】
前記プログラムの通常の生産の実行中に前記決定及び実行を行う請求項8に記載の方法。
【請求項10】
前記少なくとも一つのデッドロックフリー動作ステートメントを前記プログラムの少なくとも一つに追加する請求項8に記載の方法。
【請求項11】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある少なくとも一つの命令を変更することによって与える請求項8に記載の方法。
【請求項12】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある命令を並べ直すことによって与える請求項8に記載の方法。
【請求項13】
前記少なくとも一つのデッドロックフリー動作ステートメントを、少なくとも一つのプログラムのプログラム命令に依存しないプログラムの少なくとも一つの実行を制御することによって与える請求項8に記載の方法。
【請求項14】
前記共通の作業空間の占有された部分をボクセルモデルで表し、前記少なくとも一つの干渉領域を識別するために前記ボクセルモデルを比較する請求項8に記載の方法。
【請求項15】
共通の作業空間を有する複数のロボットのデッドロックを防止する方法であって、前記ロボットの各々は、関連のプログラムによって制御され、前記プログラムが同時に実行されるとき、前記ロボットの各々が、前記関連のプログラムの実行の一部の間に前記共通の作業空間の少なくとも一部を占有し、
前記プログラムの同時の実行中に、前記ロボットによって占有される前記共通の作業空間の部分を識別するステップと、
前記ロボットの少なくとも二つのロボットについて前記共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、
前記少なくとも一つの干渉領域を分析するとともに前記少なくとも二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、
前記少なくとも一つのデッドロック状態となる前記少なくとも二つのロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、前記プログラムの実行中に前記少なくとも一つのデッドロック状態を回避するステップと、
を備えることを特徴とする方法。
【請求項1】
共通の作業空間を有する1対のロボットのデッドロックを防止する方法であって、前記ロボットの各々は、関連のプログラムによって制御され、前記プログラムが同時に実行されるとき、前記ロボットの各々が、前記関連のプログラムの実行の一部の間に前記共通の作業空間の少なくとも一部を占有し、
前記プログラムの同時の実行中に、前記ロボットによって占有される前記共通の作業空間の部分を識別するステップと、
前記共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、
前記少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、
前記少なくとも一つのデッドロック状態となる前記ロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、前記プログラムの実行中に前記少なくとも一つのデッドロック状態を回避するステップと、
を備えることを特徴とする方法。
【請求項2】
前記プログラムの通常の生産の実行中に前記決定及び実行を行う請求項1に記載の方法。
【請求項3】
前記少なくとも一つのデッドロックフリー動作ステートメントを前記プログラムの少なくとも一つに追加する請求項1に記載の方法。
【請求項4】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある少なくとも一つの命令を変更することによって与える請求項1に記載の方法。
【請求項5】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある命令を並べ直すことによって与える請求項1に記載の方法。
【請求項6】
前記少なくとも一つのデッドロックフリー動作ステートメントを、少なくとも一つのプログラムのプログラム命令に依存しないプログラムの少なくとも一つの実行を制御することによって与える請求項1に記載の方法。
【請求項7】
前記共通の作業空間の占有された部分をボクセルモデルで表し、前記少なくとも一つの干渉領域を識別するために前記ボクセルモデルを比較する請求項1に記載の方法。
【請求項8】
共通の作業空間を有する1対のロボットのデッドロックを防止する方法を実行するためにコンピュータによって実行可能な命令を有するコンピュータ読出し可能媒体であって、前記ロボットの各々は、関連のプログラムによって制御され、前記プログラムが同時に実行されるとき、前記ロボットの各々が、前記関連のプログラムの実行の一部の間に前記共通の作業空間の少なくとも一部を占有し、前記方法は、
前記プログラムの同時の実行中に、前記ロボットによって占有される前記共通の作業空間の部分を識別する命令と、
前記共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別する命令と、
前記少なくとも一つの干渉領域を分析するとともに二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別する命令と、
前記少なくとも一つのデッドロック状態となる前記ロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、前記プログラムの実行中に前記少なくとも一つのデッドロック状態を回避する命令と、
を備えることを特徴とするコンピュータ読出し可能媒体。
【請求項9】
前記プログラムの通常の生産の実行中に前記決定及び実行を行う請求項8に記載の方法。
【請求項10】
前記少なくとも一つのデッドロックフリー動作ステートメントを前記プログラムの少なくとも一つに追加する請求項8に記載の方法。
【請求項11】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある少なくとも一つの命令を変更することによって与える請求項8に記載の方法。
【請求項12】
前記少なくとも一つのデッドロックフリー動作ステートメントを、前記プログラムの少なくとも一つにある命令を並べ直すことによって与える請求項8に記載の方法。
【請求項13】
前記少なくとも一つのデッドロックフリー動作ステートメントを、少なくとも一つのプログラムのプログラム命令に依存しないプログラムの少なくとも一つの実行を制御することによって与える請求項8に記載の方法。
【請求項14】
前記共通の作業空間の占有された部分をボクセルモデルで表し、前記少なくとも一つの干渉領域を識別するために前記ボクセルモデルを比較する請求項8に記載の方法。
【請求項15】
共通の作業空間を有する複数のロボットのデッドロックを防止する方法であって、前記ロボットの各々は、関連のプログラムによって制御され、前記プログラムが同時に実行されるとき、前記ロボットの各々が、前記関連のプログラムの実行の一部の間に前記共通の作業空間の少なくとも一部を占有し、
前記プログラムの同時の実行中に、前記ロボットによって占有される前記共通の作業空間の部分を識別するステップと、
前記ロボットの少なくとも二つのロボットについて前記共通の作業空間の部分と重なる少なくとも一つの干渉領域を識別するステップと、
前記少なくとも一つの干渉領域を分析するとともに前記少なくとも二つのロボットのうちの少なくとも一つのデッドロック状態が生じうる場所を識別するステップと、
前記少なくとも一つのデッドロック状態となる前記少なくとも二つのロボットの任意の動作の実行前に少なくとも一つのデッドロックフリー動作ステートメントを自動的に決定及び実行することによって、前記プログラムの実行中に前記少なくとも一つのデッドロック状態を回避するステップと、
を備えることを特徴とする方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8A】
【図8B】
【図8C】
【図8D】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8A】
【図8B】
【図8C】
【図8D】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−232408(P2012−232408A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−105505(P2012−105505)
【出願日】平成24年5月2日(2012.5.2)
【出願人】(505241005)ファナック ロボティクス アメリカ コーポレイション (18)
【Fターム(参考)】
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2012−105505(P2012−105505)
【出願日】平成24年5月2日(2012.5.2)
【出願人】(505241005)ファナック ロボティクス アメリカ コーポレイション (18)
【Fターム(参考)】
[ Back to top ]