説明

マルチフェーズ同期化を有する分散視覚システム

本発明は、マスタ視覚システムプロセッサと少なくとも1台のスレーブ視覚システムプロセッサとを含む第1列(「マスタ」列であってもよい)を有する、複数のプロセッサの各々によって生成される視覚システム検査結果を同期化するためのシステムおよび方法を提供する。少なくとも1つの第2列(複数の「スレーブ」列の1つであってもよい)は、マスタ視覚システムプロセッサと、少なくとも1台のスレーブ視覚システムプロセッサを有する。各列内の視覚システムプロセッサは、与えられた検査サイクルにおいて取得および処理された画像から結果を生成する。検査サイクルは外部トリガまたはその他のトリガ信号に基づかせてもよく、プロセッサ/列の一部または全部に与えられた時間/サイクルで画像を取得および処理できるようにする。与えられたサイクルにおいて、多数の列の各々は動くライン上で後続する複数の領域のそれぞれの領域の画像を取得するように位置決めされ得る。同期化プロセスは(a)一意の識別子を生成し、第1列内のマスタプロセッサと連係してトリガ信号を一意の識別子と一緒にマスタ列内の各スレーブプロセッサ、およびマスタプロセッサとスレーブプロセッサの各々に送り、(b)第2列のマスタプロセッサを介して統合された結果を受け取り、一意の識別子と第1列からの結果から統合された結果を有する。次にプロセスは、(c)これらの結果が完全であり、各々の結果の一意の識別子が同一であれば、結果を統合して目標に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、部品、対象および表面の検査に使用するための視覚システム、より具体的にはマルチカメラ視覚システムに関する。
【背景技術】
【0002】
進歩した視覚システム(「マシンビジョン」とも言う)とその基礎をなすソフトウェアの使用は、多様な製造および品質管理でますます多く使用されている。マシンビジョンにより量産品と特注品の生産においてより迅速、正確、反復可能な結果を得ることができる。典型的なマシンビジョンシステムは、関心エリアに向けられた1台以上のカメラ(典型的には個体電荷結合素子(CCD)またはCMOSベース撮像素子を有する)、CCD画像捕捉および送信するフレーム取込み装置/画像処理素子、1台以上のコンピュータまたは基盤上の処理装置、およびマシンビジョンソフトウェアアプリケーションを実行して捕捉された画像を操作するためのユーザインタフェース、および関心エリアを照らす適当な照明を含む。
【0003】
多数のカメラ(「センサ」とも言う)を使用することは、多くの視覚システムアプリケーションにおいて望ましい。このようなマルチカメラマシンビジョンシステム構成により、動くライン上の部品または対象を幾つかの有利な視点から同時に、または連続して撮像でき、ある視点からの特徴が別の視点から隠される可能性を考慮すると検査プロセスの信頼性が増す。従って、多数の画像処理装置、しばしばカメラ1台に1つの画像処理装置を使用すると、多数の処理装置が同時に働いて単一の部品または部品グループを検査するので、ライン速度を速くすることができる。処理装置は物理的に隣接しても、広く離れてネットワークまたはその他の通信チャネルを介して接続されてもよい。これは処理能力が多数の装置の間で物理的に分散されることから、分散型システムまたはアプリケーションとして知られている。追加の処理装置を使用して、各検査サイクルにおいて各装置または装置グループが複数の隣接する対象の1つを検査するようにするとライン速度を一層増すことが可能である(典型的にはクロックとトリガ信号で制御する)。たとえば、与えられた検査サイクルにおいて第1のカメラまたはカメラグループが第1の部品(離散的対象または対象もしくは表面の領域)を撮像し、第2のカメラ/カメラグループが同時にライン上の次の隣接する部品を撮像し、第3のカメラ/カメラグループが同時にライン上の第3の隣接する部品を撮像する。多数の処理装置は典型的にはカメラ1台または1カメラグループ毎に1つの処理装置が同時に働いて、同時に3つの部品をすべて検査する。これはマルチフェーズシステムとして知られており、この例では、1回の検査サイクル内で同時に3つの検査フェーズが実行される。
【0004】
一般的に、分散型マシンビジョンアプリケーションにおいては、多数の処理サブシステムが単一の部品または検査サイクルに関してそれぞれの多数の画像を取得および処理して、これらの結果をネットワークまたはその他の通信チャネルを介して送信する。与えられた検査サイクルに対して有効な総合的結果を生成するために、分散型システムにおいてすべてのプロセッサによって生成された結果が、すべての結果値が同一検査サイクルに関するものとなるように結合される。各検査結果は予測できない処理時間を要することがあるため、与えられた結果がある特定の検査サイクルに関するものであるか、それとも別の検査サイクルに関するものであるか決定するのがしばしば難しい。全体システムとしてはトリガ信号の見落としや不要なトリガ信号、1台以上のサブシステムへの給電中断、信頼できない通信チャネル等の過渡的障害を自動的に検知して回復する手段を備えなければならない。相当な処理能力を要するアプリケーションにおいては、単一の検査タスクを多数のプロセッサに分散させる必要が生じることがあるが、結果を同期化することはなおのこと困難になる。
【0005】
背景情報としては、マシンビジョン技術の多くの製造者はマルチカメラシステム−文字通りの意味で多数のカメラのシステムを提供し、これらシステムはすべて単一のプロセッサボックスの形態にて提供され、それらは典型的にはPCまたはスタンドアロン型処理ユニットとして定義される。このようなマルチカメラシステムではカメラが画像を取得するようにトリガされると、中央処理装置(CPU)が制御して、取得された画像をメモリに保存し、それによってアプリケーションは適当な画像をアプリケーションに関連付けることができる。
【0006】
多くの分散型マルチカメラアプリケーションはプログラマブルロジックコントローラ(PLC)を使用して、全体構成において離散的視覚システムからの結果を同期化して結合する。これは視覚システムそれ自体に同期化能力がない場合に、同期化の問題を解決する標準的な方法である。
【0007】
特定の視覚システム、たとえばマサチューセッツ州ナティックのコグネックス・コーポレーションから出ている製品インサイト(R)は、視覚システムアプリケーション内部にWriteResult(結果書込み)コマンドとReadResult(結果読出し)コマンドを含んでいる。インサイトは基盤上の処理装置を備えた内蔵型カメラアセンブリであり、イーサネット等の適当なネットワーキングプロトコルを介してネットワークと通信できる。WriteResultコマンドとReadResultコマンドにより、相互に連結された離散的視覚システムはネットワークを介してデータを共有できる。このようにして1つの視覚システムはマスタプロセッサとして働くことができ、他の1つ以上の視覚システムはスレーブプロセッサとして働くことができる。視覚システムの1つがマスタカメラであれば、これはイーサネットを介してスレーブカメラをトリガして、スレーブカメラから受け取られた結果が現在の検査サイクルの部品として特定されるように使用できる。典型的な構成において、検査サイクルに対して結合された視覚システム結果は、マスタカメラからPLCに共通に送信され、そこで分析されて1以上の最終結果が決定される。
【0008】
上述したように、より多くの処理能力を適用するために既存の視覚システムアプリケーションは連続フェーズでトリガされる二重構造システムを用いて解決された。これは本明細書では「マルチフェーズ」方式と呼ぶことがある。その最も単純な例は、2台のカメラと2台のプロセッサを使用し、各システムが一つおきに部品を検査するものである。より複雑なアプリケーションは、多数の列のカメラ、たとえば3列のカメラとプロセッサを使用でき、各々二つおきに部品を検査し、また各列内のカメラの数は任意である。結果は外部のPLCにおいて、または困難ではあるが、ネットワーキングデータ機能を用いて視覚システム内部で、たとえばWriteResultおよびReadResultとして同期化および連続化することが可能である。
【0009】
それにもかかわらず、結果を高速で正確に同期化し、与えられた検査サイクルの結果の同期化に影響を及ぼしかねない多くのタイプの過渡的障害から回復可能な信頼できるPLCアプリケーションを提供することは非常に困難で時間がかかることが分かった。加えて、PLCに同期化の負荷を課すことは、アプリケーションのコストと複雑さを増すことにつながり、典型的にプロセス機器も制御するPLCプログラム内の「視覚論理」のために維持が一層困難になる。
【0010】
同期化を確保する1つの方策は、すべてのマシンビジョンタスクのために、多数のダムカメラ(dumb cameras、すなわち画像を取得するだけのカメラ)と相互に連結された中央処理装置を提供することである。しかしながら、この方策の難点は拡張性に欠けることである。カメラを追加すればするほど、マシンビジョン処理のために同時に複数の画像を受け取るプロセッサにかかる負荷も増える。ある場合にはマシンビジョン処理能力を増すためにコプロセッサを追加することが可能であるが、ネットワーク上の分散型システムに比べて拡張性が非常に限られ、マルチフェーズ方式に使用するのは困難である。
【0011】
利用可能なネットワーク化された視覚システム機能、たとえばWriteResultおよびReadResultは、マスタシステムがイーサネット/ネットワークリンクおよびプロトコルを介してスレーブシステムをトリガするときのみ信頼できる結果を提供する傾向がある。つまり、そのような機能は配線接続された外部トリガ信号を使用するときは結果を同期化しない。外部トリガが一般に使用されるのは、エンコーダ、プレゼンスセンサ(たとえば光検知器)等を用いて動くラインに沿った部品の動きと位置および/または表面、たとえば動くウェブ上の関心領域を追跡する場合である。所定の動きが起こると、各システムがトリガされる。特に懸念されるのはセンサがトリガを見落としたときであり(たとえば信頼できない光検知器のために)、この場合はそのシステムに対する結果は生じず、それ以降は全体システムが同期化を失う。なぜなら、そのシステムに対する次のトリガは前のサイクルに対する結果を生むと見なされる可能性があるからである。この限界はそのようなマスタ・スレーブシステムが動作できる速度を著しく制限し、多くのアプリケーションに対して使用に適さないものにする。また、これらのシステム機能はアプリケーションを維持するのを難しくする。なぜなら各々のスレーブジョブはマスタによって期待される結果の順序に正確に一致したWriteResult機能を受け取らなければならず、この順序が不正確ならばこのエラーを検知するための信頼できる方法はないからである。さらに、そのようなネットワークに基づくシステム機能は拡張性を制限する。なぜならそれらは相互に連結された多様なサブシステムを横断して維持するには非実用的だからである。より一般的に、ネットワーク化方式は、高速マルチフェーズ・マルチカメラ構成で使用するには遅すぎる。なぜなら以前にこれらの方式を使用したところ、高速動作に望まれるマイクロ秒時間ベースよりも、むしろミリ秒範囲で起こるトリガに適していたからである。
【0012】
それぞれN番目の部品を検査する多数のプロセッサ列を用いるマルチフェーズシステムで、PLC内でまたは直接プロセッサ間で結果を同期化することは極めて困難であり、しばしば非現実的である。これらの限界を克服するためにこれまでは、利用可能でコスト効率が良ければより高出力のプロセッサを使用して、性能が準最適であることを甘受するか、またはその他の方法でマルチフェーズシステム構成を回避した。
【0013】
それゆえ、与えられたサイクルにおいて確実に検査結果を同期化して、多数の分散したプロセッサからの結果を単一のプロセッサに結合するためのシステムおよび方法を提供することが望ましい。このシステムおよび方法により、ほとんどのタイプの間欠的な信号障害およびその他の一時的問題(トリガの見落とし、見失われた部品等)から回復できなければならない。この構成は望ましくは、予測できないネットワーク遅延を許容し、配線で接続された外部トリガを含む多様なトリガ方法による高速動作が可能でなければならない。このシステムおよび方法は、マルチフェーズ同期化によってアプリケーションをさらに高速化することが、ユーザにとって透明で、外部通信を簡明にする仕方で可能でなければならない。
【発明の概要】
【0014】
本発明は従来の技術の短所を克服するために、トリガの見落とし、外部トリガ、および1台以上のシステムプロセッサにおける停電等の多様な問題から急速に回復することを可能にする、拡張可能な複数の視覚システムプロセッサの検査結果を同期化するフォールトトレラントシステムとその方法を提供する。例示的な実施形態において、本発明はマスタ視覚システムプロセッサと、少なくとも1台のスレーブ視覚システムプロセッサを含む第1列(これは「マスタ」列であってもよい)を有し、複数のプロセッサの各々によって生成される視覚システムの検査結果を同期化するシステムおよび方法を提供する。少なくとも1つの第2列(これは複数の「スレーブ」列の1つであってもよい)は、マスタ視覚システムプロセッサと、少なくとも1台のスレーブ視覚システムプロセッサを含む。各列内の視覚システムプロセッサは、与えられた検査サイクルで取得および処理される1以上の画像から結果を生成する。ある実施形態において、プロセッサはそれぞれ与えられたカメラと連係している。別の実施形態において1プロセッサ列以上のプロセッサが、1台以上の共有されたカメラと連係している。検査サイクルは外部トリガまたはその他のトリガ信号に基づかせることができ、プロセッサ/列の一部または全部に決まった時間/サイクルで画像を取得および処理できるようにする。与えられたサイクルにおいて、多数の列の各々は後続する複数の領域のそれぞれの領域の画像を取得するように位置決めされ得る。次のサイクルはラインに沿って次のグループの対象または領域の画像を取得および処理−部品グループが各カメラの視野内に入る間にそれぞれ処理時間を提供する。同期化プロセスは(a)一意の識別子を生成し、第1列内のマスタプロセッサと連係してトリガ信号を一意の識別子と一緒にマスタ列内の各スレーブプロセッサ、およびマスタプロセッサとスレーブプロセッサの各々に送り、(b)第2列のマスタプロセッサを介して統合された結果を受け取り、一意の識別子と第1列からの結果から統合された結果を有する。次にプロセスは、(c)これらの結果が完全であり、各々の結果の一意の識別子が同一であれば、これらの結果を統合して目標に送信する。
【0015】
例示的な実施形態において、同期化プロセスは第1列すなわち「マスタ」列のマスタ処理装置内に常駐することができる。代替として同期化のための結果の全体的統合は、各列のマスタ視覚システムプロセッサから結果を受け取る、相互に連結されたプロセッサによって実現できる。列間の通信および同期化プロセスとの通信は、ネットワークリンク、たとえばイーサネットを用いて実現できる。各処理装置は各結果が生成されるか、または各画像が取得されるとタイムスタンプを記録する。そのようなタイムスタンプは統合中に受け取られた結果が同一の検査サイクルのものであることを保証するのに役立つ。独立のトリガが異なるプロセッサおよび/またはプロセッサ列で使用される場合は特にそうである。タイムスタンプは、メッセージがマスタによって送られてスレーブ装置によって受け取られる相対的時間に基づいて簡単に生成できる。タイミング精度を増すために、ネットワークを介して他のクロックに信号を送るマスタクロックに基づいて、全体システムの種々の処理装置を基準クロックシステムによって互いに結び付けることができる。完全な統合された結果(または結果が不正確か不完全な場合はエラー)が目標、たとえばラインコントローラに送られる。コントローラは運動制御システムまたは装置、部品エジェクタ、ライン停止、またはそのような動作を必要とする検査状態を示すために用いられるアラート(たとえば排出を必要とする欠陥部品またはマーキングか除去を必要とする欠陥ウェブ)を操作する目的に使用できる。一般的な視覚システムにおいてプロセッサは、ライン上の種々の位置の画像を取得するように位置決めされたカメラ、または運動制御装置によって位置決めされるカメラ(この場合単一のカメラで様々な位置を撮像できる)と連係している。
以下に本発明を添付の図面に基づいて詳細に説明する。
【図面の簡単な説明】
【0016】
【図1】例示的な実施形態による、動くライン上の部品またはその他の関心領域に対する視覚システムカメラおよびプロセッサの模範的な構成のブロック図である。
【図2】図1の例示的なスレーブプロセッサシステム内に常駐するアプリケーションを示すブロック図である。
【図3】図1の例示的なマスタプロセッサシステム内に常駐するアプリケーションを示すブロック図である。
【図4】例示的な検査サイクル中のマスタプロセッサシステムの動作を示すフローチャートである。
【図5】例示的な検査サイクル中のスレーブプロセッサシステムの動作を示すフローチャートである。
【図6】離散的マスタ同期化プロセッサが複数のマルチビジョンシステムプロセッサ列の各々から統合された結果を受け取る、代替的な実施形態による視覚システムプロセッサ構成のブロック図である。
【発明を実施するための形態】
【0017】
図1は、例示的な実施形態によるマルチフェーズ・マルチプロセッサ・マシンビジョンシステム100の模範的な構成の模式図である。この構成100は、例示的な実施形態による非常に多種の可能なカメラ構成の例である。カメラの数とその配置は顕著に可変である。この例では、各カメラは独立の処理装置を有すると想定されている。別の構成では処理装置はカメラから物理的に分離でき、与えられた任意の処理装置は1台以上のカメラからの画像を処理してもよい。同様に、カメラは運動制御装置によって物理的または光電子的に操作して(図2のブロック202と図3のブロック302)、多数の位置または様々な位置から画像を様々に取得することができる。図示されているように、模範的な構成は3つの視覚システムプロセッサ列110、120、130を含む。この模範的な構成において、プロセッサはそれぞれカメラ/センサと連係している。代替的な実施形態において、プロセッサおよび/またはプロセッサ列は1台以上のカメラ/センサを共有できる。任意のプロセッサが任意のカメラを共有する場合、取得された画像を適当な各プロセッサに向けることができるように、マルチプレクサ(図示せず)を慣用的な構成で用いることができる。列がそれぞれ任意の1台以上のカメラを共有する場合、カメラへのアクセスは適当なコントローラ(やはり図示せず)を用いて順次的に行われてよい。この模範的な実施形態において各列110、120および130はそれぞれ3つの離散的視覚システムカメラ(112、114、116)、(122、124、126)および(132、134、136)と連係している。カメラは、各カメラ列の視野を通って部品/対象を下流に搬送する(矢印142)動くライン140に沿って位置を撮像するように位置決めされる。例示的な実施形態においてライン140はエンコーダ144または他の運動計測装置と作動的に結合されてよい。例示的な実施形態において列110、120、130に対して一連の存在検知器146、147、148を設けることができる。ある実施形態において検知器146、147、148は慣用的な光検知器であってもよい。これらは各々の部品または対象、すなわち部品N(150)、部品N+l(152)、部品N+2(154)が通過してそれぞれの列110、120、130の視野に入るのを検知する。本明細書で使用される「対象」という用語は、離散的部品、または全体的な部品もしくは表面の離散的領域を含んでいてもよいことに留意されたい。たとえば本明細書で定義される「対象」は、各列の視野を通って動く連続ウェブの領域を含んでいてもよい。
【0018】
例示的に、エンコーダ144および/または検知器146、147、148は、慣用的な設計のトリガ生成回路に信号を提供する。種々の実施形態においてトリガ生成回路は各列および/またはカメラに外部トリガを提供できる。トリガ構成の基本的な例において、第3の部品が各列の視野を通過する度に各カメラに同時に外部トリガが適用される。この時、各カメラの視野内でそれぞれの部品または対象の画像が取得される。1列に多数の処理装置を使用すると、速く動く部品が視覚システムによって完全に撮像され、次の検査サイクルの前に1台以上のプロセッサによって(各プロセッサによって全体または一部が)処理されるようにするのを助ける。例として、ある列と連係する各カメラは特定の特徴(キャップ、バーコード、ラベル)等を検査でき、マスタはこれらの結果を結合して検査が完全で有効であるかを決定する。ここで明らかにしておくべきは、再び離散的なカメラおよびプロセッサの数と構成は非常に様々であり、ある列と連係するカメラまたはプロセッサの数は、他の列の数と異なってよいことである。またこの例では、検査サイクルはトリガの同時発生に基づいているのに対し、画像は独立のトリガ発生またはその他の要因(たとえば1台以上のプロセッサ自己トリガ視覚システムプロセス)に基づいて取得および処理できることに留意されたい。この例における次の検査サイクルでは、列110が部品N+3(図示せず)を検査する間、列120および列130はそれぞれ部品N+4およびN+5(図示せず)を検査するように動作することに留意されたい。
【0019】
種々の列のプロセッサは、図示されているようにプロセッサとこれらと連係する列内のカメラリンクによって表される共通のイーサネットネットワークを用いて相互に連結されている。代替的な実施形態において他のネットワーキング/通信トポロジーを使用できることが明確に想定されている。例として図示されているように、最も左側に示された列110は「マスタ」列と呼ばれ、中央および最も右側の列120と130は「スレーブ」列と呼ばれる。同様に各列内で1台のプロセッサ「M」がマスタ112、122、132であり、特定の列内で相互に連結された2台のプロセッサはスレーブ「S」114、116、124、126、134、136である。リンク160、162および164は、各列内におけるスレーブからマスタシステムへの結果SRI、SR2、SR3の流れを定義する。リンク170および172は、列110内の全体システムマスタ112に送られる各部品152および154の検査に対する統合された結果CR1およびCR2の流れを表す。次にこのマスタ112は、3個すべての部品150、152、154に対する結果の完全なセットを外部コントローラ180に送ることができる。外部コントローラ180(たとえばPLC)は、すべてのプロセッサの結果を調整してアラートを出し、運動制御システムまたは部品エジェクタを作動させ、ラインを停止し、良好な/不良な部品または表面領域を特定するために使用できる。これは結果を解釈するアプリケーションを含んでいてもよく、または基本的な入力/出力装置(たとえば部品エジェクタ/キッカを作動させる)であってもよい。ある実施形態において全体システムマスタ112は、外部コントローラ180を必要とすることなく、部品エジェクタ等の装置を直接制御してもよい。ここで明らかにしておくべきは、結果の統合は本来各処理装置で行われる検査処理よりはるかに少ない処理資源を必要とすることを前提とすれば、システム処理量は全体構成により多くのカメラおよび処理装置の列が追加されるに連れてほぼ直線的に増加できることである。原理的にはこのタイプの階層は無制限に拡張できるが、実用的には図示されているように2層が広範なアプリケーションに対して卓越した結果を提供する。
【0020】
単一のマスタ112を介してコントローラ180を相互接続することによって、PLCまたはその他の外部コントローラは、コントローラの処理オーバーヘッドを増やすことになる外部同期化を必要とする多数の入力が不要である。むしろ各検査サイクルには同期化および統合された結果が供給される。この統合された結果は基礎となるすべてのシステム結果を含んでいないこともあるが(1台以上のプロセッサでトリガが見落とされるため等)、必要とされるすべての結果を含む次のサイクルは、結果を完全に同期化するシステムリカバリを含み、リカバリされたサイクルが保証される。
【0021】
各スレーブプロセッサシステム200に常駐する一般化されたアプリケーション210を模式的に表現する図2を参照する。この構成は、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組合せとして実装できる非常に多様な可能な組織の例である。システム200は、上述した適当なソースから外部トリガ信号222を受け取る1以上の画像取得プロセス220を含む。トリガ信号は、システム内の他のアプリケーションから、またはネットワークを介して受け取られる内部トリガ命令も含んでいてもよい。1以上の画像取得プロセス220は、適当な時間に部品、対象または関心領域を撮像する役割を負う。取得された各画像は保存され、1以上の視覚システムプロセス230によって分析/処理される。視覚システムプロセスは、モデル部品、対象または表面(被写体)の整えられた画像を用いる視覚アプリケーションを含む、容認可能な検査または視覚アプリケーションを用いる。プロセスは検査合格/不合格、最大4次元の特徴の位置(すなわち3つの物理的次元における対象の位置プラス第4次元−時間における対象の位置)、文字または記号コードの読取り、次元の測定、色等を含んでいてもよい。視覚システムプロセスは、与えられた被写体が所定の目標検査規則に合致しているか決定して、検査された各被写体に関する絶対値(合格/不合格)、得点またはその他の情報を生成する。
【0022】
スレーブシステム200はさらに、他のマスタおよびスレーブプロセッサシステムを含む他の装置との通信を許容するネットワークプロセス240を含む。ネットワークプロセスは慣用的なイーサネットまたはその他の物理的通信チャネルを使用でき、TCP/IPまたは他の容認できるプロトコル、たとえばUDPは通信を容易にする。検査結果242を含め、視覚システムプロセス230によって生成されたデータが、ネットワークプロセス240を用いネットワークに向けられる。結果242は列マスタプロセッサシステムにアドレスされる。以下に述べるように、スレーブアプリケーション250は同期化情報(タイムスタンプ、順次的識別子等)を検査結果242に提供する。スレーブアプリケーションは代替的に、本明細書に記された機能を実行するために必要とされるときに情報をマスタに送る一連の送信アプリケーションとして、また情報をマスタから受け取る受信アプリケーションとして定義される。種々の装置のタイミングは、これもさらに以下に述べるように、共通の時間基準として働くクロック回路260を用いて維持および同期化される。例示的な実施形態においてクロック260はIEEE1588に従って実装され得るが、他の規格も明確に想定されている。一般的に、ある装置内のマスタクロック(たとえばシステムマスタ112)は、現在の時間をスレーブ列およびこれと連係したプロセッサに送る。他のプロセッサはそれらのクロックを用いてそれらのクロックとマスタクロックとの間の相対的オフセットを決定する。標準プロトコルに従ってメッセージが交換されて、各装置内の正確な時間を決定する。
【0023】
図3は、アプリケーションスタック310を有する例示的なマスタプロセッサシステム300を示す。一般に、マスタプロセッサは、プロセッサ構成において列マスタまたは全体システムマスタとして作動できるようにする点を除けば、構造的および機能的に1以上のスレーブプロセッサと類似している。1以上の画像取得プロセスは、上述したスレーブプロセッサ200の1以上のプロセス220に類似して作動する。これらは内部および/または外部トリガ222に反応して被写体の画像を生成および保存する。1以上の視覚システムプロセス330も上述した視覚システムプロセス(230)と類似して作動する。マスタ300に対するネットワークプロセス(340)は、マスタそれ自体に対する結果と、マスタにアドレスされるスレーブ結果242からなる統合された結果342を送信するように適合されている。スレーブ結果242の受信は、ネットワークプロセス340によって処理され、マスタ同期化アプリケーションに渡される。これは、自己生成された結果を処理するための上述したスレーブアプリケーション250の機能を含んでいてもよいが、以下に述べるように他のプロセッサから受け取ったスレーブ結果の組織も処理する。アプリケーション350は、IEEE1588規格または他の時間基準に従って作動して、相互に連結されたプロセッサシステム間の同期化を提供する共通の基準クロック360と相互作用する。クロック360がシステムマスタ(112)内に常駐する場合、クロックはシステムマスタクロックとして働くことができる。同様に、特定のシステム300が全体システムマスタ(112)として働く場合は、同期化アプリケーション350は、他のスレーブ列(120、130)からの統合された結果370を処理するように適合されたマスタ列同期化プロセス352(仮想線内に示す)を含んでいてもよい。一般に、マスタアプリケーションおよび同期化プロセスは種々の送受信アプリケーションを含んでいてもよいが、これらはスレーブプロセッサとスレーブ列から受け取ったデータを処理し、トリガとクロックに基づきデータをスレーブに送信し、統合された結果をコントローラに送信する。これらの統合された結果370は、列マスタ(122、132)によりネットワークを介して送信される列マスタとスレーブ結果からなる。ここで、送信された統合された結果342はすべての列からのすべてのプロセッサ結果を含み、これらの結果はプロセッサに送信される(ブロック380)。
【0024】
以下に、図4と図5のフローチャートを参照して、それぞれ検査サイクルにおける各スレーブプロセッサシステムとマスタプロセッサシステムの動作を詳細に説明する。最初にマスタプロシージャ400(図4)を参照して、サイクルがスタートすると(ステップ410)、システムはトリガ信号を待機する(決定ステップ412)。トリガを受け取ると(決定ステップ412経由)、マスタシステムは画像の取得を開始する(ステップ414)。システムはまた一意の識別子を生成し(ステップ416)、トリガメッセージを1台以上のスレーブシステムに送る(ステップ418)。メッセージは生成された識別子を含み、検査サイクルを一意に識別する。メッセージは、マスタと1以上のスレーブが共通の時間基準、たとえば上述したIEEE1588クロック構成を共有する場合は、マスタシステムからのタイムスタンプも含んでいてもよい。これはまた位置基準、たとえばエンコーダ位置または運動制御装置座標を含んでもよい。メッセージの生成および伝送はネットワークを介して行われるが、画像の取得と処理はマスタ内で進行する。タイムスタンプおよび/または位置基準は、種々のカメラが独立に、または既知の順序でトリガされる場合は有利であることに留意されたい。結果が適切なタイムスタンプまたは位置順序と一緒に到着しない場合は、結果が実際にネットワークを介していつ受け取られるかに関わりなく、結果は拒否され得る。
【0025】
図5に示されているように、トリガメッセージまたは外部もしくは内部トリガ信号を待機して受け取って(決定ステップ512)、スレーブシステムプロシージャがスタートする(510)。次にスレーブがスタートして画像を取得する(ステップ514)。プロシージャ500は、トリガメッセージに含まれているか、またはスレーブ自身の内部クロックからタイムスタンプおよび/または位置基準を記録する。スレーブの画像取得は直接メッセージまたは外部もしくは内部信号によってトリガされてもよく、タイムスタンプも押される。スレーブの画像取得が完了すると、スレーブはトリガメッセージが受け取られたか、またそのタイムスタンプがスレーブのトリガ時間または位置に関して所定の時間または位置ウィンドウ内にあるか決定する(決定ステップ516および518)。時間/位置ウィンドウはユーザが指定するか、または任意に定義されてよく、種々のトリガ順序を許容するために方向も決められていない。指定の時間/位置ウィンドウ内でそのようなメッセージが受け取られない場合は、エラーが生成される(ステップ520)。さもなければスレーブは画像を処理し(ステップ522)、マスタのトリガメッセージからの検査サイクルの一意のIDを含めて結果をマスタシステムに送り返す(ステップ530)。これによってこのスレーブシステムに対する特定の検査サイクルは完了し、次のトリガメッセージを待機する(ステップ510、512)。
【0026】
再び図4のマスタプロシージャ400を参照して、ステップ418でトリガメッセージが各スレーブシステムに送られた後、マスタはそれ自身の画像の取得を終了して(ステップ420)、適当な視覚システムプロセスを用いて画像を処理する。プロシージャ400はマスタ列マスタ(システムマスタ)またはスレーブ列のマスタで起こってもよく、さらに以下に述べるように、統合された結果の数と結果の最終目標が異なる。プロシージャ400では、この処理ステップ422から結果が生成される。結果は一意の検査IDを含み、マスタのクロックによって生成されたタイムスタンプを含んでいてもよい。マスタがそれ自身の検査の結果を、1台以上のスレーブシステムからの結果と結合できる状態になると、マスタは最初に必要とされるすべての結果が受け取られたか決定する(決定ステップ430)。マスタはそのような結果が受け取られるのを指定されたタイムアウトまたは位置まで待つ。タイムアウトまたは位置ウィンドウ内で(決定ステップ432)、必要とされるすべての結果が受け取られたら(決定ステップ430)、プロシージャ400は、1以上のスレーブからの一意の検査IDが現在の検査サイクルに対する(ステップ416からの)マスタの検査IDと一致することを検証する(決定ステップ440)。検査IDが一致すれば、結果は受け入れられ、ステップ450でマスタにより結合された結果が生成される。この結合は何らかの容認可能な方法でフォーマット化されたデータパッケージの形式で行われて、情報が相互に連結された装置によって復号することができる。この結合は、適当な頭部、尾部およびその他のフォーマット化されたデータ欄を含んでもよい。プロシージャ400がスレーブ列マスタで実行されると、結合された結果はマスタ列マスタに送られ(ステップ460)、ステップ450に従いマスタ列マスタ上で結合される。次に全体システム結合の結果はステップ460に従いコントローラに転送される(マスタ列マスタ上で実行)。ある実施形態において、全体システムマスタは結合された結果に基づいて外部装置、たとえば部品拒絶機構を外部コントローラと通信させる必要なく直接制御できる。次に特定の検査サイクルが完了する(ステップ470)。
【0027】
プロシージャ400および500により、マスタおよび/またはスレーブへのトリガの見落としや疑似トリガを自動的に検知してリカバリできる。スレーブがトリガを見落とし、または停電もしくは結果メッセージのネットワークパッケージ紛失を経験したら、マスタは到着しない応答を待つのをタイムアウトして(ステップ432)、エラーを生成する(ステップ480)。スレーブ列内で発生するエラーは、スレーブ列マスタによってマスタ列マスタ(システムマスタ)に送られる。エラーは次にステップ460を介してコントローラに送られる。マスタ列マスタ(システムマスタ)によってエラーが生成されると、エラーはステップ460を介してコントローラに直接送り出される。スレーブが次のトリガを受け取るか、またはマスタが停電もしくはトリガメッセージのネットワークパッケージ紛失を持つ場合、指定されたトリガウィンドウ内でメッセージを受け取らないことを決定すると、スレーブは直ちに問題を検知してエラーを生成する。いずれの場合も、システムは1または2検査サイクル内で自動的に正常動作をリカバーする。
【0028】
より一般的には、マルチフェーズ同期化は、あるフェーズ列内で各マスタシステムがより高いレベルのマスタのスレーブとなるときに達成される。3層以上のマスタ装置とスレーブ装置とを互いに段階付けできることが明確に想定されている。全体システムマスタは別個のコントローラであってもよく、またはこの機能は図1に示されているように、1列のプロセッサのマスタシステムによって実行され得ることも明確に想定されている。
【0029】
多数の視覚システムプロセッサ(およびこれらと連係したカメラ)の構成600の代替的な実施形態を表現した図6を参照する。この実施形態ではマスタ列610と少なくとも1つのスレーブ列620が設けられている。各スレーブプロセッサ612および622の結果は、列マスタ614および624の結果と統合される。次に各列のマスタの統合された結果は離散的マスタプロセッサ630に結合され、これは図4のマスタプロシージャ400と同じやり方で、結合された結果に基づいて同期化プロセス640を作動させる。さらに別の実施形態において、すべての結果はマスタ列のマスタ614に送られ得るが、最終同期化の目的にはプロセッサ630に送られる。一般的に上述したように、結合された結果または何らかのエラー条件がマスタプロセッサ630から外部コントローラ650に伝えられる。離散的プロセッサは一意の検査サイクル識別子および内部基準クロックに基づくタイムスタンプも生成できる。
【0030】
ここで明らかにしておくべきは、上述した構成はマルチカメラ検査システムを実装するために、非常に拡張可能で一般的にフォールトトレラントなシステムと方法を提供するということである。個々の視覚システムカメラの数は極めて多様であり、マスタおよびスレーブ階層の層数も極めて多様である。検査結果を同期化するために外部PLCを用いる従来の方策とは異なり、本発明による分散型視覚サブシステムはイーサネット等の通信チャネルを用いてそれら自身の間で調整することが可能となる。同様にたとえばWriteResultおよびReadResultタイプの機能を用いる従来の方策とは異なり、例示的な実施形態では検査がどのようにトリガされるかに関わりなくフォールトトレラントな通信を提供し、著しく速くエラーを検知してリカバーすることができる。さらに、例示的な実施形態では検査結果のマルチフェーズ同期化のために独特で新規の技術が提供される。
【0031】
以上、本発明の例示的な実施形態を詳細に説明した。本発明の精神と範囲から逸脱することなく、種々の変容や追加を行うことができる。多数の特徴を提供するために、上述した種々の実施形態の各々は他の既述の実施形態と組み合わせることができる。さらに、本発明の装置と方法の多数の個別の実施形態を上述したが、本明細書ではこれは本発明の原理の応用の単なる例として示されているに過ぎない。たとえば「マスタ」、「スレーブ」、「列」およびこれに関連する用語は、複数の視覚システムプロセッサの間の通信の種々の階層的および/または組織的構成の例を意味するに過ぎず、特定の構造的構成の絶対的定義として受け取られるべきではない。さらに、本明細書で述べた種々のプロシージャおよびプロセスはハードウェア、コンピュータ可読プログラム命令を含むソフトウェア、またはハードウェアとソフトウェアの組合せを用いて実装され得る。したがって、以上の説明は単なる例示であり、本発明の範囲を制限するものと受け取ってはならない。

【特許請求の範囲】
【請求項1】
取得された画像を処理する複数の視覚システムプロセッサの結果を同期化して、そこから結果を生成するための方法であって、
少なくとも1台の(a)マスタ視覚システムプロセッサと、これと相互に連結された少なくとも1台の(b)スレーブ視覚システムプロセッサとを含む少なくとも第1のスレーブカメラ列を設け;
少なくとも1台の(c)マスタ視覚システムプロセッサと、少なくとも1台の(d)スレーブ視覚システムプロセッサとを含むマスタカメラ列を設け、前記マスタ列のマスタ視覚システムプロセッサはスレーブカメラ列のマスタ視覚システムプロセッサと相互に連結されており;
前記マスタ列において、各検査サイクルでトリガを受け取り、これに応答して(c)マスタ視覚システムプロセッサで画像を取得および処理し、通信リンクを介して(c)マスタ視覚システムプロセッサと連係されたマスタ同期化プロセスからトリガ信号を発生し、前記信号は(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々に対する一意の検査サイクル識別子を含んでおり;
(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々で画像を取得および処理した後で、(c)マスタ視覚システムプロセッサと(d)スレーブ視覚システムプロセッサの結果を統合し、第1のスレーブ列において、(a)マスタ視覚システムプロセッサと(b)スレーブ視覚システムプロセッサの結果を統合し、そして統合された結果を一意の検査サイクル識別子と一緒に通信リンクを介してマスタ同期化プロセスに送信し;さらに
マスタ同期化プロセスで、前記マスタ列からの統合された結果と前記第1のスレーブ列の統合された結果が完全であるか、各検査サイクル識別子が同一であるか、そしてこれらの結果が完全かつ同一であるかを決定して、完全な結果を所定の目標に送信する、ステップを含む方法。
【請求項2】
前記マスタ同期化プロセスは前記(c)マスタ視覚システムプロセッサによって操作される、請求項1記載の方法。
【請求項3】
前記マスタ同期化プロセスは、少なくとも前記(c)マスタ視覚システムプロセッサおよび所定の目標と作動的に結合された離散的プロセッサによって操作される、請求項1記載の方法。
【請求項4】
少なくとも1台の(e)マスタ視覚システムプロセッサと、これと相互に連結された少なくとも1台の(f)スレーブ視覚システムプロセッサとを含む少なくとも第2のスレーブカメラ列を設け、前記マスタ列において、各検査サイクルでトリガを受け取り、これに応答してマスタ同期化プロセスから第2のトリガ信号を発生し、前記信号は(e)マスタ視覚システムプロセッサと、(f)スレーブ視覚システムプロセッサの各々に対する一意の検査サイクル識別子を含んでおり、(e)マスタ視覚システムプロセッサと(f)スレーブ視覚システムプロセッサの各々で画像を取得および処理した後で、(e)マスタ視覚システムプロセッサと(f)スレーブ視覚システムプロセッサの結果を統合し、そして統合された結果を一意の検査サイクル識別子と一緒に通信リンクを介してマスタ同期化プロセスに送信し、さらにマスタ同期化プロセスで、前記マスタ列からの統合された結果、および前記第1のスレーブ列と前記第2のスレーブ列の統合された結果が完全であるかを決定して、結果が完全で同一であれば、完全な結果を所定の目標に送信することを含む、請求項1記載の方法。
【請求項5】
さらに、前記同期化プロセスが(i)結果が完全ではない、および、(ii)各検査サイクル識別子が同一ではない、の少なくとも一つであると決定したら、コントローラにエラーを示すことを含む、請求項1記載の方法。
【請求項6】
さらに(c)マスタ視覚システムプロセッサと、(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々に対して共通の時間基準を設け、検査サイクルにおいて共通の時間基準に基づいてこれらの結果にタイムスタンプを付加することを含む、請求項1記載の方法。
【請求項7】
前記同期化プロセスは、各結果に対する各タイムスタンプの間の既知の時間シーケンスに基づいて統合された結果の完全性を決定する、請求項6記載の方法。
【請求項8】
前記トリガは外部トリガを含んでおり、該方法はさらに対象を検知する存在検知器と、動きを検知するエンコーダと、位置基準を有する運動制御システムとからなるグループのうちの少なくとも1つから外部トリガを生成することを含む、請求項1記載の方法。
【請求項9】
さらに、完全な結果に基づいて所定の目標で動くラインに対して動作を実行する、請求項1記載の方法。
【請求項10】
さらに、それぞれ画像を取得する視覚システムプロセッサと連係する複数のカメラを含み、1台以上のカメラは(a)動くライン上の所定の位置を視るように位置決めされるか、または(b)運動制御装置によって所定の目標位置の画像を取得するように位置決めされる、請求項1記載の方法。
【請求項11】
さらに(c)マスタ視覚システムプロセッサと、(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々に対して共通の位置基準を設け、検査サイクルにおいて共通の位置基準に基づいてその結果に位置基準を付加することを含む、請求項1記載の方法。
【請求項12】
前記同期化プロセスは、各結果に対する各位置基準の間の位置関係に基づいて統合された結果の完全性を決定する請求項11記載の方法。
【請求項13】
取得された画像を処理する複数の視覚システムプロセッサの結果を同期化して、そこから結果を生成するためのシステムであって、
少なくとも1台の(a)マスタ視覚システムプロセッサと、これと相互に連結された少なくとも1台の(b)スレーブ視覚システムプロセッサとを含む第1のスレーブカメラ列を含み;
少なくとも1台の(c)マスタ視覚システムプロセッサと、少なくとも1台の(d)スレーブ視覚システムプロセッサとを含むマスタカメラ列とを含み、前記マスタ列のマスタ視覚システムプロセッサはスレーブカメラ列のマスタ視覚システムプロセッサと相互に連結されており、前記マスタ列は、各検査サイクルでトリガを受け取り、これに応答して(c)マスタ視覚システムプロセッサで画像を取得および処理する画像取得プロセスと、通信リンクを介して(c)マスタ視覚システムプロセッサと連係されたトリガ信号を発生するマスタ同期化プロセスとを含み、前記信号は(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々に対する一意の検査サイクル識別子を含んでおり;
さらに該システムは統合プロセスを含み、前記統合プロセスは(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々で画像が取得および処理された後で、(c)マスタ視覚システムプロセッサと(d)スレーブ視覚システムプロセッサの結果を統合し、第1のスレーブ列において、(a)マスタ視覚システムプロセッサと(b)スレーブ視覚システムプロセッサの結果を統合し、そして統合された結果を固有の検査サイクル識別子と一緒に通信リンクを介してマスタ同期化プロセスに送信し、前記マスタ同期化プロセスは、前記マスタ列からの統合された結果と前記第1のスレーブ列の統合された結果が完全であるか、各検査サイクル識別子が同一であるか、そしてこれらの結果が完全かつ同一であるかを決定して、完全な結果を所定の目標に送信するシステム。
【請求項14】
前記マスタ同期化プロセスは、(c)マスタ視覚システムプロセッサ内に常駐する、請求項13記載のシステム。
【請求項15】
前記マスタ同期化プロセスは、少なくとも(c)マスタ視覚システムプロセッサおよび所定の目標と作動的に結合された離散的プロセッサ内に常駐する、請求項13記載のシステム。
【請求項16】
さらに(c)マスタ視覚システムプロセッサと、(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々における共通の時間基準、および検査サイクルにおいてこれらの結果に付加されるタイムスタンプを含む、請求項13記載のシステム。
【請求項17】
前記トリガは外部トリガであり、前記外部トリガは、対象を検知する存在検知器と、動きを検知するエンコーダと、位置基準を有する運動制御システムとからなるグループのうちの少なくとも1つによって生成される、請求項16記載のシステム。
【請求項18】
さらに(c)マスタ視覚システムプロセッサと、(d)スレーブ視覚システムプロセッサと、(a)マスタ視覚システムプロセッサと、(b)スレーブ視覚システムプロセッサの各々に対して設けられた共通の位置基準を含み、検査サイクルにおいて共通の位置基準に基づいてこれらの結果に位置基準が付加される、請求項13記載のシステム。
【請求項19】
前記同期化プロセスは、各結果に対する各位置基準の間の位置関係に基づいて統合された結果の完全性を決定する、請求項18記載のシステム。
【請求項20】
さらに、それぞれ画像を取得する視覚システムプロセッサと連係する複数のカメラを含み、1台以上のカメラは(a)動くライン上の所定の位置を視るように位置決めされるか、または(b)運動制御装置によって所定の目標位置の画像を取得するように位置決めされる、請求項13記載の方法。
【請求項21】
複数のプロセッサの各々によって生成される視覚システム検査結果を同期化するためのシステムであって:
それぞれ検査サイクルにおいて取得および処理された1以上の画像から結果を生成するマスタ視覚システムプロセッサと少なくとも1台のスレーブ視覚システムプロセッサを含む第1列と;
それぞれ検査サイクルにおいて取得および処理された1以上の画像から結果を生成するマスタ視覚システムプロセッサと少なくとも1台のスレーブ視覚システムプロセッサを含む第2列と;
同期化プロセスとを有し、前記同期化プロセスは(a)一意の識別子を生成し、第1列内のマスタプロセッサと連係してトリガ信号を一意の識別子と一緒にマスタ列内の各スレーブプロセッサ、およびマスタプロセッサとスレーブプロセッサの各々に送り、(b)第2列のマスタプロセッサを介して統合された結果を受け取り、一意の識別子と第1列からの結果から統合された結果を有し、(c)これらの結果が完全であり、各々の結果の一意の識別子が同一であれば結果を統合して目標に送信するシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2013−516146(P2013−516146A)
【公表日】平成25年5月9日(2013.5.9)
【国際特許分類】
【出願番号】特願2012−547141(P2012−547141)
【出願日】平成22年12月21日(2010.12.21)
【国際出願番号】PCT/US2010/061533
【国際公開番号】WO2011/090660
【国際公開日】平成23年7月28日(2011.7.28)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(504382671)コグネックス・コーポレイション (16)
【Fターム(参考)】