(57)【特許請求の範囲】
【請求項１】
取得された画像を処理する複数の視覚システムプロセッサの結果を同期化して、そこから結果を生成するための方法であって、
少なくとも１台の（ａ）マスタ視覚システムプロセッサと、これと相互に連結された少なくとも１台の（ｂ）スレーブ視覚システムプロセッサとを含む少なくとも第１のスレーブカメラ列を設け；
少なくとも１台の（ｃ）マスタ視覚システムプロセッサと、少なくとも１台の（ｄ）スレーブ視覚システムプロセッサとを含むマスタカメラ列を設け、前記マスタ列のマスタ視覚システムプロセッサはスレーブカメラ列のマスタ視覚システムプロセッサと相互に連結されており；
前記マスタ列において、各検査サイクルでトリガを受け取り、これに応答して（ｃ）マスタ視覚システムプロセッサで画像を取得および処理し、通信リンクを介して（ｃ）マスタ視覚システムプロセッサと連係されたマスタ同期化プロセスからトリガ信号を発生し、前記信号は（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々に対する一意の検査サイクル識別子を含んでおり；
（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々で画像を取得および処理した後で、（ｃ）マスタ視覚システムプロセッサと（ｄ）スレーブ視覚システムプロセッサの結果を統合し、第１のスレーブ列において、（ａ）マスタ視覚システムプロセッサと（ｂ）スレーブ視覚システムプロセッサの結果を統合し、そして統合された結果を一意の検査サイクル識別子と一緒に通信リンクを介してマスタ同期化プロセスに送信し；さらに
マスタ同期化プロセスで、前記マスタ列からの統合された結果と前記第１のスレーブ列の統合された結果が、各結果に対するタイムスタンプの間の既知の時間シーケンスに基づき、完全であるか、各検査サイクル識別子が同一であるか、そしてこれらの結果が完全かつ同一であるかを決定して、完全な結果を所定の目標に送信する、ステップを含む方法。
【請求項２】
前記マスタ同期化プロセスは前記（ｃ）マスタ視覚システムプロセッサによって操作される、請求項１記載の方法。
【請求項３】
前記マスタ同期化プロセスは、少なくとも前記（ｃ）マスタ視覚システムプロセッサおよび所定の目標と作動的に結合された離散的プロセッサによって操作される、請求項１記載の方法。
【請求項４】
少なくとも１台の（ｅ）マスタ視覚システムプロセッサと、これと相互に連結された少なくとも１台の（ｆ）スレーブ視覚システムプロセッサとを含む少なくとも第２のスレーブカメラ列を設け、前記マスタ列において、各検査サイクルでトリガを受け取り、これに応答してマスタ同期化プロセスから第２のトリガ信号を発生し、前記信号は（ｅ）マスタ視覚システムプロセッサと、（ｆ）スレーブ視覚システムプロセッサの各々に対する一意の検査サイクル識別子を含んでおり、（ｅ）マスタ視覚システムプロセッサと（ｆ）スレーブ視覚システムプロセッサの各々で画像を取得および処理した後で、（ｅ）マスタ視覚システムプロセッサと（ｆ）スレーブ視覚システムプロセッサの結果を統合し、そして統合された結果を一意の検査サイクル識別子と一緒に通信リンクを介してマスタ同期化プロセスに送信し、さらにマスタ同期化プロセスで、前記マスタ列からの統合された結果、および前記第１のスレーブ列と前記第２のスレーブ列の統合された結果が完全であるかを決定して、結果が完全で同一であれば、完全な結果を所定の目標に送信することを含む、請求項１記載の方法。
【請求項５】
さらに、前記同期化プロセスが（ｉ）結果が完全ではない、および、（ｉｉ）各検査サイクル識別子が同一ではない、の少なくとも一つであると決定したら、コントローラにエラーを示すことを含む、請求項１記載の方法。
【請求項６】
さらに（ｃ）マスタ視覚システムプロセッサと、（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々に対して共通の時間基準を設け、検査サイクルにおいて共通の時間基準に基づいてこれらの結果にタイムスタンプを付加することを含む、請求項１記載の方法。
【請求項７】
前記トリガは外部トリガを含んでおり、該方法はさらに対象を検知する存在検知器と、動きを検知するエンコーダと、位置基準を有する運動制御システムとからなるグループのうちの少なくとも１つから外部トリガを生成することを含む、請求項１記載の方法。
【請求項８】
さらに、完全な結果に基づいて所定の目標で動くラインに対して動作を実行する、請求項１記載の方法。
【請求項９】
さらに、それぞれ画像を取得する視覚システムプロセッサと連係する複数のカメラを含み、１台以上のカメラは（ａ）動くライン上の所定の位置を視るように位置決めされるか、または（ｂ）運動制御装置によって所定の目標位置の画像を取得するように位置決めされる、請求項１記載の方法。
【請求項１０】
さらに（ｃ）マスタ視覚システムプロセッサと、（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々に対して共通の位置基準を設け、検査サイクルにおいて共通の位置基準に基づいてその結果に位置基準を付加することを含む、請求項１記載の方法。
【請求項１１】
前記同期化プロセスは、各結果に対する各位置基準の間の位置関係に基づいて統合された結果の完全性を決定する請求項１０記載の方法。
【請求項１２】
取得された画像を処理する複数の視覚システムプロセッサの結果を同期化して、そこから結果を生成するためのシステムであって、
少なくとも１台の（ａ）マスタ視覚システムプロセッサと、これと相互に連結された少なくとも１台の（ｂ）スレーブ視覚システムプロセッサとを含む第１のスレーブカメラ列を含み；
少なくとも１台の（ｃ）マスタ視覚システムプロセッサと、少なくとも１台の（ｄ）スレーブ視覚システムプロセッサとを含むマスタカメラ列とを含み、前記マスタ列のマスタ視覚システムプロセッサはスレーブカメラ列のマスタ視覚システムプロセッサと相互に連結されており、前記マスタ列は、各検査サイクルでトリガを受け取り、これに応答して（ｃ）マスタ視覚システムプロセッサで画像を取得および処理する画像取得プロセスと、通信リンクを介して（ｃ）マスタ視覚システムプロセッサと連係されたトリガ信号を発生するマスタ同期化プロセスとを含み、前記信号は（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々に対する一意の検査サイクル識別子を含んでおり；
さらに該システムは統合プロセスを含み、前記統合プロセスは（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々で画像が取得および処理された後で、（ｃ）マスタ視覚システムプロセッサと（ｄ）スレーブ視覚システムプロセッサの結果を統合し、第１のスレーブ列において、（ａ）マスタ視覚システムプロセッサと（ｂ）スレーブ視覚システムプロセッサの結果を統合し、そして統合された結果を固有の検査サイクル識別子と一緒に通信リンクを介してマスタ同期化プロセスに送信し、前記マスタ同期化プロセスは、前記マスタ列からの統合された結果と前記第１のスレーブ列の統合された結果が、各結果に対する各位置基準の間の位置関係に基づき、完全であるか、各検査サイクル識別子が同一であるか、そしてこれらの結果が完全かつ同一であるかを決定して、完全な結果を所定の目標に送信するシステム。
【請求項１３】
前記マスタ同期化プロセスは、（ｃ）マスタ視覚システムプロセッサ内に常駐する、請求項１２記載のシステム。
【請求項１４】
前記マスタ同期化プロセスは、少なくとも（ｃ）マスタ視覚システムプロセッサおよび所定の目標と作動的に結合された離散的プロセッサ内に常駐する、請求項１２記載のシステム。
【請求項１５】
さらに（ｃ）マスタ視覚システムプロセッサと、（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々における共通の時間基準、および検査サイクルにおいてこれらの結果に付加されるタイムスタンプを含む、請求項１２記載のシステム。
【請求項１６】
前記トリガは外部トリガであり、前記外部トリガは、対象を検知する存在検知器と、動きを検知するエンコーダと、位置基準を有する運動制御システムとからなるグループのうちの少なくとも１つによって生成される、請求項１５記載のシステム。
【請求項１７】
さらに（ｃ）マスタ視覚システムプロセッサと、（ｄ）スレーブ視覚システムプロセッサと、（ａ）マスタ視覚システムプロセッサと、（ｂ）スレーブ視覚システムプロセッサの各々に対して設けられた共通の位置基準を含み、検査サイクルにおいて共通の位置基準に基づいてこれらの結果に位置基準が付加される、請求項１２記載のシステム。
【請求項１８】
さらに、それぞれ画像を取得する視覚システムプロセッサと連係する複数のカメラを含み、１台以上のカメラは（ａ）動くライン上の所定の位置を視るように位置決めされるか、または（ｂ）運動制御装置によって所定の目標位置の画像を取得するように位置決めされる、請求項１２記載のシステム。
【請求項１９】
複数のプロセッサの各々によって生成される視覚システム検査結果を同期化するためのシステムであって：
それぞれ検査サイクルにおいて取得および処理された１以上の画像から結果を生成するマスタ視覚システムプロセッサと少なくとも１台のスレーブ視覚システムプロセッサを含む第１列と；
それぞれ検査サイクルにおいて取得および処理された１以上の画像から結果を生成するマスタ視覚システムプロセッサと少なくとも１台のスレーブ視覚システムプロセッサを含む第２列と；
同期化プロセスとを有し、前記同期化プロセスは（ａ）一意の識別子を生成し、第１列内のマスタプロセッサと連係してトリガ信号を一意の識別子と一緒にマスタ列内の各スレーブプロセッサ、およびマスタプロセッサとスレーブプロセッサの各々に送り、（ｂ）第２列のマスタプロセッサを介して統合された結果を受け取り、一意の識別子と第１列からの結果から統合された結果を有し、（ｃ）これらの各結果に対するタイムスタンプの間の既知の時間シーケンスに基づいて結果が完全であるか否かを決定することによって、これらの結果が完全であり、各々の結果の一意の識別子が同一であれば結果を統合して目標に送信するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、部品、対象および表面の検査に使用するための視覚システム、より具体的にはマルチカメラ視覚システムに関する。
【背景技術】
【０００２】
進歩した視覚システム（「マシンビジョン」とも言う）とその基礎をなすソフトウェアの使用は、多様な製造および品質管理でますます多く使用されている。マシンビジョンにより量産品と特注品の生産においてより迅速、正確、反復可能な結果を得ることができる。典型的なマシンビジョンシステムは、関心エリアに向けられた１台以上のカメラ（典型的には個体電荷結合素子（ＣＣＤ）またはＣＭＯＳベース撮像素子を有する）、ＣＣＤ画像捕捉および送信するフレーム取込み装置／画像処理素子、１台以上のコンピュータまたは基盤上の処理装置、およびマシンビジョンソフトウェアアプリケーションを実行して捕捉された画像を操作するためのユーザインタフェース、および関心エリアを照らす適当な照明を含む。
【０００３】
多数のカメラ（「センサ」とも言う）を使用することは、多くの視覚システムアプリケーションにおいて望ましい。このようなマルチカメラマシンビジョンシステム構成により、動くライン上の部品または対象を幾つかの有利な視点から同時に、または連続して撮像でき、ある視点からの特徴が別の視点から隠される可能性を考慮すると検査プロセスの信頼性が増す。従って、多数の画像処理装置、しばしばカメラ１台に１つの画像処理装置を使用すると、多数の処理装置が同時に働いて単一の部品または部品グループを検査するので、ライン速度を速くすることができる。処理装置は物理的に隣接しても、広く離れてネットワークまたはその他の通信チャネルを介して接続されてもよい。これは処理能力が多数の装置の間で物理的に分散されることから、分散型システムまたはアプリケーションとして知られている。追加の処理装置を使用して、各検査サイクルにおいて各装置または装置グループが複数の隣接する対象の１つを検査するようにするとライン速度を一層増すことが可能である（典型的にはクロックとトリガ信号で制御する）。たとえば、与えられた検査サイクルにおいて第１のカメラまたはカメラグループが第１の部品（離散的対象または対象もしくは表面の領域）を撮像し、第２のカメラ／カメラグループが同時にライン上の次の隣接する部品を撮像し、第３のカメラ／カメラグループが同時にライン上の第３の隣接する部品を撮像する。多数の処理装置は典型的にはカメラ１台または１カメラグループ毎に１つの処理装置が同時に働いて、同時に３つの部品をすべて検査する。これはマルチフェーズシステムとして知られており、この例では、１回の検査サイクル内で同時に３つの検査フェーズが実行される。
【０００４】
一般的に、分散型マシンビジョンアプリケーションにおいては、多数の処理サブシステムが単一の部品または検査サイクルに関してそれぞれの多数の画像を取得および処理して、これらの結果をネットワークまたはその他の通信チャネルを介して送信する。与えられた検査サイクルに対して有効な総合的結果を生成するために、分散型システムにおいてすべてのプロセッサによって生成された結果が、すべての結果値が同一検査サイクルに関するものとなるように結合される。各検査結果は予測できない処理時間を要することがあるため、与えられた結果がある特定の検査サイクルに関するものであるか、それとも別の検査サイクルに関するものであるか決定するのがしばしば難しい。全体システムとしてはトリガ信号の見落としや不要なトリガ信号、１台以上のサブシステムへの給電中断、信頼できない通信チャネル等の過渡的障害を自動的に検知して回復する手段を備えなければならない。相当な処理能力を要するアプリケーションにおいては、単一の検査タスクを多数のプロセッサに分散させる必要が生じることがあるが、結果を同期化することはなおのこと困難になる。
【０００５】
背景情報としては、マシンビジョン技術の多くの製造者はマルチカメラシステム−文字通りの意味で多数のカメラのシステムを提供し、これらシステムはすべて単一のプロセッサボックスの形態にて提供され、それらは典型的にはＰＣまたはスタンドアロン型処理ユニットとして定義される。このようなマルチカメラシステムではカメラが画像を取得するようにトリガされると、中央処理装置（ＣＰＵ）が制御して、取得された画像をメモリに保存し、それによってアプリケーションは適当な画像をアプリケーションに関連付けることができる。
【０００６】
多くの分散型マルチカメラアプリケーションはプログラマブルロジックコントローラ（ＰＬＣ）を使用して、全体構成において離散的視覚システムからの結果を同期化して結合する。これは視覚システムそれ自体に同期化能力がない場合に、同期化の問題を解決する標準的な方法である。
【０００７】
特定の視覚システム、たとえばマサチューセッツ州ナティックのコグネックス・コーポレーションから出ている製品インサイト(R)は、視覚システムアプリケーション内部にＷｒｉｔｅＲｅｓｕｌｔ（結果書込み）コマンドとＲｅａｄＲｅｓｕｌｔ（結果読出し）コマンドを含んでいる。インサイトは基盤上の処理装置を備えた内蔵型カメラアセンブリであり、イーサネット等の適当なネットワーキングプロトコルを介してネットワークと通信できる。ＷｒｉｔｅＲｅｓｕｌｔコマンドとＲｅａｄＲｅｓｕｌｔコマンドにより、相互に連結された離散的視覚システムはネットワークを介してデータを共有できる。このようにして１つの視覚システムはマスタプロセッサとして働くことができ、他の１つ以上の視覚システムはスレーブプロセッサとして働くことができる。視覚システムの１つがマスタカメラであれば、これはイーサネットを介してスレーブカメラをトリガして、スレーブカメラから受け取られた結果が現在の検査サイクルの部品として特定されるように使用できる。典型的な構成において、検査サイクルに対して結合された視覚システム結果は、マスタカメラからＰＬＣに共通に送信され、そこで分析されて１以上の最終結果が決定される。
【０００８】
上述したように、より多くの処理能力を適用するために既存の視覚システムアプリケーションは連続フェーズでトリガされる二重構造システムを用いて解決された。これは本明細書では「マルチフェーズ」方式と呼ぶことがある。その最も単純な例は、２台のカメラと２台のプロセッサを使用し、各システムが一つおきに部品を検査するものである。より複雑なアプリケーションは、多数の列のカメラ、たとえば３列のカメラとプロセッサを使用でき、各々二つおきに部品を検査し、また各列内のカメラの数は任意である。結果は外部のＰＬＣにおいて、または困難ではあるが、ネットワーキングデータ機能を用いて視覚システム内部で、たとえばＷｒｉｔｅＲｅｓｕｌｔおよびＲｅａｄＲｅｓｕｌｔとして同期化および連続化することが可能である。
【０００９】
それにもかかわらず、結果を高速で正確に同期化し、与えられた検査サイクルの結果の同期化に影響を及ぼしかねない多くのタイプの過渡的障害から回復可能な信頼できるＰＬＣアプリケーションを提供することは非常に困難で時間がかかることが分かった。加えて、ＰＬＣに同期化の負荷を課すことは、アプリケーションのコストと複雑さを増すことにつながり、典型的にプロセス機器も制御するＰＬＣプログラム内の「視覚論理」のために維持が一層困難になる。
【００１０】
同期化を確保する１つの方策は、すべてのマシンビジョンタスクのために、多数のダムカメラ（dumb cameras、すなわち画像を取得するだけのカメラ）と相互に連結された中央処理装置を提供することである。しかしながら、この方策の難点は拡張性に欠けることである。カメラを追加すればするほど、マシンビジョン処理のために同時に複数の画像を受け取るプロセッサにかかる負荷も増える。ある場合にはマシンビジョン処理能力を増すためにコプロセッサを追加することが可能であるが、ネットワーク上の分散型システムに比べて拡張性が非常に限られ、マルチフェーズ方式に使用するのは困難である。
【００１１】
利用可能なネットワーク化された視覚システム機能、たとえばＷｒｉｔｅＲｅｓｕｌｔおよびＲｅａｄＲｅｓｕｌｔは、マスタシステムがイーサネット／ネットワークリンクおよびプロトコルを介してスレーブシステムをトリガするときのみ信頼できる結果を提供する傾向がある。つまり、そのような機能は配線接続された外部トリガ信号を使用するときは結果を同期化しない。外部トリガが一般に使用されるのは、エンコーダ、プレゼンスセンサ（たとえば光検知器）等を用いて動くラインに沿った部品の動きと位置および／または表面、たとえば動くウェブ上の関心領域を追跡する場合である。所定の動きが起こると、各システムがトリガされる。特に懸念されるのはセンサがトリガを見落としたときであり（たとえば信頼できない光検知器のために）、この場合はそのシステムに対する結果は生じず、それ以降は全体システムが同期化を失う。なぜなら、そのシステムに対する次のトリガは前のサイクルに対する結果を生むと見なされる可能性があるからである。この限界はそのようなマスタ・スレーブシステムが動作できる速度を著しく制限し、多くのアプリケーションに対して使用に適さないものにする。また、これらのシステム機能はアプリケーションを維持するのを難しくする。なぜなら各々のスレーブジョブはマスタによって期待される結果の順序に正確に一致したＷｒｉｔｅＲｅｓｕｌｔ機能を受け取らなければならず、この順序が不正確ならばこのエラーを検知するための信頼できる方法はないからである。さらに、そのようなネットワークに基づくシステム機能は拡張性を制限する。なぜならそれらは相互に連結された多様なサブシステムを横断して維持するには非実用的だからである。より一般的に、ネットワーク化方式は、高速マルチフェーズ・マルチカメラ構成で使用するには遅すぎる。なぜなら以前にこれらの方式を使用したところ、高速動作に望まれるマイクロ秒時間ベースよりも、むしろミリ秒範囲で起こるトリガに適していたからである。
【００１２】
それぞれＮ番目の部品を検査する多数のプロセッサ列を用いるマルチフェーズシステムで、ＰＬＣ内でまたは直接プロセッサ間で結果を同期化することは極めて困難であり、しばしば非現実的である。これらの限界を克服するためにこれまでは、利用可能でコスト効率が良ければより高出力のプロセッサを使用して、性能が準最適であることを甘受するか、またはその他の方法でマルチフェーズシステム構成を回避した。
【００１３】
それゆえ、与えられたサイクルにおいて確実に検査結果を同期化して、多数の分散したプロセッサからの結果を単一のプロセッサに結合するためのシステムおよび方法を提供することが望ましい。このシステムおよび方法により、ほとんどのタイプの間欠的な信号障害およびその他の一時的問題（トリガの見落とし、見失われた部品等）から回復できなければならない。この構成は望ましくは、予測できないネットワーク遅延を許容し、配線で接続された外部トリガを含む多様なトリガ方法による高速動作が可能でなければならない。このシステムおよび方法は、マルチフェーズ同期化によってアプリケーションをさらに高速化することが、ユーザにとって透明で、外部通信を簡明にする仕方で可能でなければならない。
【発明の概要】
【００１４】
本発明は従来の技術の短所を克服するために、トリガの見落とし、外部トリガ、および１台以上のシステムプロセッサにおける停電等の多様な問題から急速に回復することを可能にする、拡張可能な複数の視覚システムプロセッサの検査結果を同期化するフォールトトレラントシステムとその方法を提供する。例示的な実施形態において、本発明はマスタ視覚システムプロセッサと、少なくとも１台のスレーブ視覚システムプロセッサを含む第１列（これは「マスタ」列であってもよい）を有し、複数のプロセッサの各々によって生成される視覚システムの検査結果を同期化するシステムおよび方法を提供する。少なくとも１つの第２列（これは複数の「スレーブ」列の１つであってもよい）は、マスタ視覚システムプロセッサと、少なくとも１台のスレーブ視覚システムプロセッサを含む。各列内の視覚システムプロセッサは、与えられた検査サイクルで取得および処理される１以上の画像から結果を生成する。ある実施形態において、プロセッサはそれぞれ与えられたカメラと連係している。別の実施形態において１プロセッサ列以上のプロセッサが、１台以上の共有されたカメラと連係している。検査サイクルは外部トリガまたはその他のトリガ信号に基づかせることができ、プロセッサ／列の一部または全部に決まった時間／サイクルで画像を取得および処理できるようにする。与えられたサイクルにおいて、多数の列の各々は後続する複数の領域のそれぞれの領域の画像を取得するように位置決めされ得る。次のサイクルはラインに沿って次のグループの対象または領域の画像を取得および処理−部品グループが各カメラの視野内に入る間にそれぞれ処理時間を提供する。同期化プロセスは（ａ）一意の識別子を生成し、第１列内のマスタプロセッサと連係してトリガ信号を一意の識別子と一緒にマスタ列内の各スレーブプロセッサ、およびマスタプロセッサとスレーブプロセッサの各々に送り、（ｂ）第２列のマスタプロセッサを介して統合された結果を受け取り、一意の識別子と第１列からの結果から統合された結果を有する。次にプロセスは、（ｃ）これらの結果が完全であり、各々の結果の一意の識別子が同一であれば、これらの結果を統合して目標に送信する。
【００１５】
例示的な実施形態において、同期化プロセスは第１列すなわち「マスタ」列のマスタ処理装置内に常駐することができる。代替として同期化のための結果の全体的統合は、各列のマスタ視覚システムプロセッサから結果を受け取る、相互に連結されたプロセッサによって実現できる。列間の通信および同期化プロセスとの通信は、ネットワークリンク、たとえばイーサネットを用いて実現できる。各処理装置は各結果が生成されるか、または各画像が取得されるとタイムスタンプを記録する。そのようなタイムスタンプは統合中に受け取られた結果が同一の検査サイクルのものであることを保証するのに役立つ。独立のトリガが異なるプロセッサおよび／またはプロセッサ列で使用される場合は特にそうである。タイムスタンプは、メッセージがマスタによって送られてスレーブ装置によって受け取られる相対的時間に基づいて簡単に生成できる。タイミング精度を増すために、ネットワークを介して他のクロックに信号を送るマスタクロックに基づいて、全体システムの種々の処理装置を基準クロックシステムによって互いに結び付けることができる。完全な統合された結果（または結果が不正確か不完全な場合はエラー）が目標、たとえばラインコントローラに送られる。コントローラは運動制御システムまたは装置、部品エジェクタ、ライン停止、またはそのような動作を必要とする検査状態を示すために用いられるアラート（たとえば排出を必要とする欠陥部品またはマーキングか除去を必要とする欠陥ウェブ）を操作する目的に使用できる。一般的な視覚システムにおいてプロセッサは、ライン上の種々の位置の画像を取得するように位置決めされたカメラ、または運動制御装置によって位置決めされるカメラ（この場合単一のカメラで様々な位置を撮像できる）と連係している。
以下に本発明を添付の図面に基づいて詳細に説明する。
【図面の簡単な説明】
【００１６】
【図１】例示的な実施形態による、動くライン上の部品またはその他の関心領域に対する視覚システムカメラおよびプロセッサの模範的な構成のブロック図である。
【図２】図１の例示的なスレーブプロセッサシステム内に常駐するアプリケーションを示すブロック図である。
【図３】図１の例示的なマスタプロセッサシステム内に常駐するアプリケーションを示すブロック図である。
【図４】例示的な検査サイクル中のマスタプロセッサシステムの動作を示すフローチャートである。
【図５】例示的な検査サイクル中のスレーブプロセッサシステムの動作を示すフローチャートである。
【図６】離散的マスタ同期化プロセッサが複数のマルチビジョンシステムプロセッサ列の各々から統合された結果を受け取る、代替的な実施形態による視覚システムプロセッサ構成のブロック図である。
【発明を実施するための形態】
【００１７】
図１は、例示的な実施形態によるマルチフェーズ・マルチプロセッサ・マシンビジョンシステム１００の模範的な構成の模式図である。この構成１００は、例示的な実施形態による非常に多種の可能なカメラ構成の例である。カメラの数とその配置は顕著に可変である。この例では、各カメラは独立の処理装置を有すると想定されている。別の構成では処理装置はカメラから物理的に分離でき、与えられた任意の処理装置は１台以上のカメラからの画像を処理してもよい。同様に、カメラは運動制御装置によって物理的または光電子的に操作して（図２のブロック２０２と図３のブロック３０２）、多数の位置または様々な位置から画像を様々に取得することができる。図示されているように、模範的な構成は３つの視覚システムプロセッサ列１１０、１２０、１３０を含む。この模範的な構成において、プロセッサはそれぞれカメラ／センサと連係している。代替的な実施形態において、プロセッサおよび／またはプロセッサ列は１台以上のカメラ／センサを共有できる。任意のプロセッサが任意のカメラを共有する場合、取得された画像を適当な各プロセッサに向けることができるように、マルチプレクサ（図示せず）を慣用的な構成で用いることができる。列がそれぞれ任意の１台以上のカメラを共有する場合、カメラへのアクセスは適当なコントローラ（やはり図示せず）を用いて順次的に行われてよい。この模範的な実施形態において各列１１０、１２０および１３０はそれぞれ３つの離散的視覚システムカメラ（１１２、１１４、１１６）、（１２２、１２４、１２６）および（１３２、１３４、１３６）と連係している。カメラは、各カメラ列の視野を通って部品／対象を下流に搬送する（矢印１４２）動くライン１４０に沿って位置を撮像するように位置決めされる。例示的な実施形態においてライン１４０はエンコーダ１４４または他の運動計測装置と作動的に結合されてよい。例示的な実施形態において列１１０、１２０、１３０に対して一連の存在検知器１４６、１４７、１４８を設けることができる。ある実施形態において検知器１４６、１４７、１４８は慣用的な光検知器であってもよい。これらは各々の部品または対象、すなわち部品Ｎ（１５０）、部品Ｎ＋ｌ（１５２）、部品Ｎ＋２（１５４）が通過してそれぞれの列１１０、１２０、１３０の視野に入るのを検知する。本明細書で使用される「対象」という用語は、離散的部品、または全体的な部品もしくは表面の離散的領域を含んでいてもよいことに留意されたい。たとえば本明細書で定義される「対象」は、各列の視野を通って動く連続ウェブの領域を含んでいてもよい。
【００１８】
例示的に、エンコーダ１４４および／または検知器１４６、１４７、１４８は、慣用的な設計のトリガ生成回路に信号を提供する。種々の実施形態においてトリガ生成回路は各列および／またはカメラに外部トリガを提供できる。トリガ構成の基本的な例において、第３の部品が各列の視野を通過する度に各カメラに同時に外部トリガが適用される。この時、各カメラの視野内でそれぞれの部品または対象の画像が取得される。１列に多数の処理装置を使用すると、速く動く部品が視覚システムによって完全に撮像され、次の検査サイクルの前に１台以上のプロセッサによって（各プロセッサによって全体または一部が）処理されるようにするのを助ける。例として、ある列と連係する各カメラは特定の特徴（キャップ、バーコード、ラベル）等を検査でき、マスタはこれらの結果を結合して検査が完全で有効であるかを決定する。ここで明らかにしておくべきは、再び離散的なカメラおよびプロセッサの数と構成は非常に様々であり、ある列と連係するカメラまたはプロセッサの数は、他の列の数と異なってよいことである。またこの例では、検査サイクルはトリガの同時発生に基づいているのに対し、画像は独立のトリガ発生またはその他の要因（たとえば１台以上のプロセッサ自己トリガ視覚システムプロセス）に基づいて取得および処理できることに留意されたい。この例における次の検査サイクルでは、列１１０が部品Ｎ＋３（図示せず）を検査する間、列１２０および列１３０はそれぞれ部品Ｎ＋４およびＮ＋５（図示せず）を検査するように動作することに留意されたい。
【００１９】
種々の列のプロセッサは、図示されているようにプロセッサとこれらと連係する列内のカメラリンクによって表される共通のイーサネットネットワークを用いて相互に連結されている。代替的な実施形態において他のネットワーキング／通信トポロジーを使用できることが明確に想定されている。例として図示されているように、最も左側に示された列１１０は「マスタ」列と呼ばれ、中央および最も右側の列１２０と１３０は「スレーブ」列と呼ばれる。同様に各列内で１台のプロセッサ「Ｍ」がマスタ１１２、１２２、１３２であり、特定の列内で相互に連結された２台のプロセッサはスレーブ「Ｓ」１１４、１１６、１２４、１２６、１３４、１３６である。リンク１６０、１６２および１６４は、各列内におけるスレーブからマスタシステムへの結果ＳＲＩ、ＳＲ２、ＳＲ３の流れを定義する。リンク１７０および１７２は、列１１０内の全体システムマスタ１１２に送られる各部品１５２および１５４の検査に対する統合された結果ＣＲ１およびＣＲ２の流れを表す。次にこのマスタ１１２は、３個すべての部品１５０、１５２、１５４に対する結果の完全なセットを外部コントローラ１８０に送ることができる。外部コントローラ１８０（たとえばＰＬＣ）は、すべてのプロセッサの結果を調整してアラートを出し、運動制御システムまたは部品エジェクタを作動させ、ラインを停止し、良好な／不良な部品または表面領域を特定するために使用できる。これは結果を解釈するアプリケーションを含んでいてもよく、または基本的な入力／出力装置（たとえば部品エジェクタ／キッカを作動させる）であってもよい。ある実施形態において全体システムマスタ１１２は、外部コントローラ１８０を必要とすることなく、部品エジェクタ等の装置を直接制御してもよい。ここで明らかにしておくべきは、結果の統合は本来各処理装置で行われる検査処理よりはるかに少ない処理資源を必要とすることを前提とすれば、システム処理量は全体構成により多くのカメラおよび処理装置の列が追加されるに連れてほぼ直線的に増加できることである。原理的にはこのタイプの階層は無制限に拡張できるが、実用的には図示されているように２層が広範なアプリケーションに対して卓越した結果を提供する。
【００２０】
単一のマスタ１１２を介してコントローラ１８０を相互接続することによって、ＰＬＣまたはその他の外部コントローラは、コントローラの処理オーバーヘッドを増やすことになる外部同期化を必要とする多数の入力が不要である。むしろ各検査サイクルには同期化および統合された結果が供給される。この統合された結果は基礎となるすべてのシステム結果を含んでいないこともあるが（１台以上のプロセッサでトリガが見落とされるため等）、必要とされるすべての結果を含む次のサイクルは、結果を完全に同期化するシステムリカバリを含み、リカバリされたサイクルが保証される。
【００２１】
各スレーブプロセッサシステム２００に常駐する一般化されたアプリケーション２１０を模式的に表現する図２を参照する。この構成は、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組合せとして実装できる非常に多様な可能な組織の例である。システム２００は、上述した適当なソースから外部トリガ信号２２２を受け取る１以上の画像取得プロセス２２０を含む。トリガ信号は、システム内の他のアプリケーションから、またはネットワークを介して受け取られる内部トリガ命令も含んでいてもよい。１以上の画像取得プロセス２２０は、適当な時間に部品、対象または関心領域を撮像する役割を負う。取得された各画像は保存され、１以上の視覚システムプロセス２３０によって分析／処理される。視覚システムプロセスは、モデル部品、対象または表面（被写体）の整えられた画像を用いる視覚アプリケーションを含む、容認可能な検査または視覚アプリケーションを用いる。プロセスは検査合格／不合格、最大４次元の特徴の位置（すなわち３つの物理的次元における対象の位置プラス第４次元−時間における対象の位置）、文字または記号コードの読取り、次元の測定、色等を含んでいてもよい。視覚システムプロセスは、与えられた被写体が所定の目標検査規則に合致しているか決定して、検査された各被写体に関する絶対値（合格／不合格）、得点またはその他の情報を生成する。
【００２２】
スレーブシステム２００はさらに、他のマスタおよびスレーブプロセッサシステムを含む他の装置との通信を許容するネットワークプロセス２４０を含む。ネットワークプロセスは慣用的なイーサネットまたはその他の物理的通信チャネルを使用でき、ＴＣＰ／ＩＰまたは他の容認できるプロトコル、たとえばＵＤＰは通信を容易にする。検査結果２４２を含め、視覚システムプロセス２３０によって生成されたデータが、ネットワークプロセス２４０を用いネットワークに向けられる。結果２４２は列マスタプロセッサシステムにアドレスされる。以下に述べるように、スレーブアプリケーション２５０は同期化情報（タイムスタンプ、順次的識別子等）を検査結果２４２に提供する。スレーブアプリケーションは代替的に、本明細書に記された機能を実行するために必要とされるときに情報をマスタに送る一連の送信アプリケーションとして、また情報をマスタから受け取る受信アプリケーションとして定義される。種々の装置のタイミングは、これもさらに以下に述べるように、共通の時間基準として働くクロック回路２６０を用いて維持および同期化される。例示的な実施形態においてクロック２６０はＩＥＥＥ１５８８に従って実装され得るが、他の規格も明確に想定されている。一般的に、ある装置内のマスタクロック（たとえばシステムマスタ１１２）は、現在の時間をスレーブ列およびこれと連係したプロセッサに送る。他のプロセッサはそれらのクロックを用いてそれらのクロックとマスタクロックとの間の相対的オフセットを決定する。標準プロトコルに従ってメッセージが交換されて、各装置内の正確な時間を決定する。
【００２３】
図３は、アプリケーションスタック３１０を有する例示的なマスタプロセッサシステム３００を示す。一般に、マスタプロセッサは、プロセッサ構成において列マスタまたは全体システムマスタとして作動できるようにする点を除けば、構造的および機能的に１以上のスレーブプロセッサと類似している。１以上の画像取得プロセスは、上述したスレーブプロセッサ２００の１以上のプロセス２２０に類似して作動する。これらは内部および／または外部トリガ２２２に反応して被写体の画像を生成および保存する。１以上の視覚システムプロセス３３０も上述した視覚システムプロセス（２３０）と類似して作動する。マスタ３００に対するネットワークプロセス（３４０）は、マスタそれ自体に対する結果と、マスタにアドレスされるスレーブ結果２４２からなる統合された結果３４２を送信するように適合されている。スレーブ結果２４２の受信は、ネットワークプロセス３４０によって処理され、マスタ同期化アプリケーションに渡される。これは、自己生成された結果を処理するための上述したスレーブアプリケーション２５０の機能を含んでいてもよいが、以下に述べるように他のプロセッサから受け取ったスレーブ結果の組織も処理する。アプリケーション３５０は、ＩＥＥＥ１５８８規格または他の時間基準に従って作動して、相互に連結されたプロセッサシステム間の同期化を提供する共通の基準クロック３６０と相互作用する。クロック３６０がシステムマスタ（１１２）内に常駐する場合、クロックはシステムマスタクロックとして働くことができる。同様に、特定のシステム３００が全体システムマスタ（１１２）として働く場合は、同期化アプリケーション３５０は、他のスレーブ列（１２０、１３０）からの統合された結果３７０を処理するように適合されたマスタ列同期化プロセス３５２（仮想線内に示す）を含んでいてもよい。一般に、マスタアプリケーションおよび同期化プロセスは種々の送受信アプリケーションを含んでいてもよいが、これらはスレーブプロセッサとスレーブ列から受け取ったデータを処理し、トリガとクロックに基づきデータをスレーブに送信し、統合された結果をコントローラに送信する。これらの統合された結果３７０は、列マスタ（１２２、１３２）によりネットワークを介して送信される列マスタとスレーブ結果からなる。ここで、送信された統合された結果３４２はすべての列からのすべてのプロセッサ結果を含み、これらの結果はプロセッサに送信される（ブロック３８０）。
【００２４】
以下に、図４と図５のフローチャートを参照して、それぞれ検査サイクルにおける各スレーブプロセッサシステムとマスタプロセッサシステムの動作を詳細に説明する。最初にマスタプロシージャ４００（図４）を参照して、サイクルがスタートすると（ステップ４１０）、システムはトリガ信号を待機する（決定ステップ４１２）。トリガを受け取ると（決定ステップ４１２経由）、マスタシステムは画像の取得を開始する（ステップ４１４）。システムはまた一意の識別子を生成し（ステップ４１６）、トリガメッセージを１台以上のスレーブシステムに送る（ステップ４１８）。メッセージは生成された識別子を含み、検査サイクルを一意に識別する。メッセージは、マスタと１以上のスレーブが共通の時間基準、たとえば上述したＩＥＥＥ１５８８クロック構成を共有する場合は、マスタシステムからのタイムスタンプも含んでいてもよい。これはまた位置基準、たとえばエンコーダ位置または運動制御装置座標を含んでもよい。メッセージの生成および伝送はネットワークを介して行われるが、画像の取得と処理はマスタ内で進行する。タイムスタンプおよび／または位置基準は、種々のカメラが独立に、または既知の順序でトリガされる場合は有利であることに留意されたい。結果が適切なタイムスタンプまたは位置順序と一緒に到着しない場合は、結果が実際にネットワークを介していつ受け取られるかに関わりなく、結果は拒否され得る。
【００２５】
図５に示されているように、トリガメッセージまたは外部もしくは内部トリガ信号を待機して受け取って（決定ステップ５１２）、スレーブシステムプロシージャがスタートする（５１０）。次にスレーブがスタートして画像を取得する（ステップ５１４）。プロシージャ５００は、トリガメッセージに含まれているか、またはスレーブ自身の内部クロックからタイムスタンプおよび／または位置基準を記録する。スレーブの画像取得は直接メッセージまたは外部もしくは内部信号によってトリガされてもよく、タイムスタンプも押される。スレーブの画像取得が完了すると、スレーブはトリガメッセージが受け取られたか、またそのタイムスタンプがスレーブのトリガ時間または位置に関して所定の時間または位置ウィンドウ内にあるか決定する（決定ステップ５１６および５１８）。時間／位置ウィンドウはユーザが指定するか、または任意に定義されてよく、種々のトリガ順序を許容するために方向も決められていない。指定の時間／位置ウィンドウ内でそのようなメッセージが受け取られない場合は、エラーが生成される（ステップ５２０）。さもなければスレーブは画像を処理し（ステップ５２２）、マスタのトリガメッセージからの検査サイクルの一意のＩＤを含めて結果をマスタシステムに送り返す（ステップ５３０）。これによってこのスレーブシステムに対する特定の検査サイクルは完了し、次のトリガメッセージを待機する（ステップ５１０、５１２）。
【００２６】
再び図４のマスタプロシージャ４００を参照して、ステップ４１８でトリガメッセージが各スレーブシステムに送られた後、マスタはそれ自身の画像の取得を終了して（ステップ４２０）、適当な視覚システムプロセスを用いて画像を処理する。プロシージャ４００はマスタ列マスタ（システムマスタ）またはスレーブ列のマスタで起こってもよく、さらに以下に述べるように、統合された結果の数と結果の最終目標が異なる。プロシージャ４００では、この処理ステップ４２２から結果が生成される。結果は一意の検査ＩＤを含み、マスタのクロックによって生成されたタイムスタンプを含んでいてもよい。マスタがそれ自身の検査の結果を、１台以上のスレーブシステムからの結果と結合できる状態になると、マスタは最初に必要とされるすべての結果が受け取られたか決定する（決定ステップ４３０）。マスタはそのような結果が受け取られるのを指定されたタイムアウトまたは位置まで待つ。タイムアウトまたは位置ウィンドウ内で（決定ステップ４３２）、必要とされるすべての結果が受け取られたら（決定ステップ４３０）、プロシージャ４００は、１以上のスレーブからの一意の検査ＩＤが現在の検査サイクルに対する（ステップ４１６からの）マスタの検査ＩＤと一致することを検証する（決定ステップ４４０）。検査ＩＤが一致すれば、結果は受け入れられ、ステップ４５０でマスタにより結合された結果が生成される。この結合は何らかの容認可能な方法でフォーマット化されたデータパッケージの形式で行われて、情報が相互に連結された装置によって復号することができる。この結合は、適当な頭部、尾部およびその他のフォーマット化されたデータ欄を含んでもよい。プロシージャ４００がスレーブ列マスタで実行されると、結合された結果はマスタ列マスタに送られ（ステップ４６０）、ステップ４５０に従いマスタ列マスタ上で結合される。次に全体システム結合の結果はステップ４６０に従いコントローラに転送される（マスタ列マスタ上で実行）。ある実施形態において、全体システムマスタは結合された結果に基づいて外部装置、たとえば部品拒絶機構を外部コントローラと通信させる必要なく直接制御できる。次に特定の検査サイクルが完了する（ステップ４７０）。
【００２７】
プロシージャ４００および５００により、マスタおよび／またはスレーブへのトリガの見落としや疑似トリガを自動的に検知してリカバリできる。スレーブがトリガを見落とし、または停電もしくは結果メッセージのネットワークパッケージ紛失を経験したら、マスタは到着しない応答を待つのをタイムアウトして（ステップ４３２）、エラーを生成する（ステップ４８０）。スレーブ列内で発生するエラーは、スレーブ列マスタによってマスタ列マスタ（システムマスタ）に送られる。エラーは次にステップ４６０を介してコントローラに送られる。マスタ列マスタ（システムマスタ）によってエラーが生成されると、エラーはステップ４６０を介してコントローラに直接送り出される。スレーブが次のトリガを受け取るか、またはマスタが停電もしくはトリガメッセージのネットワークパッケージ紛失を持つ場合、指定されたトリガウィンドウ内でメッセージを受け取らないことを決定すると、スレーブは直ちに問題を検知してエラーを生成する。いずれの場合も、システムは１または２検査サイクル内で自動的に正常動作をリカバーする。
【００２８】
より一般的には、マルチフェーズ同期化は、あるフェーズ列内で各マスタシステムがより高いレベルのマスタのスレーブとなるときに達成される。３層以上のマスタ装置とスレーブ装置とを互いに段階付けできることが明確に想定されている。全体システムマスタは別個のコントローラであってもよく、またはこの機能は図１に示されているように、１列のプロセッサのマスタシステムによって実行され得ることも明確に想定されている。
【００２９】
多数の視覚システムプロセッサ（およびこれらと連係したカメラ）の構成６００の代替的な実施形態を表現した図６を参照する。この実施形態ではマスタ列６１０と少なくとも１つのスレーブ列６２０が設けられている。各スレーブプロセッサ６１２および６２２の結果は、列マスタ６１４および６２４の結果と統合される。次に各列のマスタの統合された結果は離散的マスタプロセッサ６３０に結合され、これは図４のマスタプロシージャ４００と同じやり方で、結合された結果に基づいて同期化プロセス６４０を作動させる。さらに別の実施形態において、すべての結果はマスタ列のマスタ６１４に送られ得るが、最終同期化の目的にはプロセッサ６３０に送られる。一般的に上述したように、結合された結果または何らかのエラー条件がマスタプロセッサ６３０から外部コントローラ６５０に伝えられる。離散的プロセッサは一意の検査サイクル識別子および内部基準クロックに基づくタイムスタンプも生成できる。
【００３０】
ここで明らかにしておくべきは、上述した構成はマルチカメラ検査システムを実装するために、非常に拡張可能で一般的にフォールトトレラントなシステムと方法を提供するということである。個々の視覚システムカメラの数は極めて多様であり、マスタおよびスレーブ階層の層数も極めて多様である。検査結果を同期化するために外部ＰＬＣを用いる従来の方策とは異なり、本発明による分散型視覚サブシステムはイーサネット等の通信チャネルを用いてそれら自身の間で調整することが可能となる。同様にたとえばＷｒｉｔｅＲｅｓｕｌｔおよびＲｅａｄＲｅｓｕｌｔタイプの機能を用いる従来の方策とは異なり、例示的な実施形態では検査がどのようにトリガされるかに関わりなくフォールトトレラントな通信を提供し、著しく速くエラーを検知してリカバーすることができる。さらに、例示的な実施形態では検査結果のマルチフェーズ同期化のために独特で新規の技術が提供される。
【００３１】
以上、本発明の例示的な実施形態を詳細に説明した。本発明の精神と範囲から逸脱することなく、種々の変容や追加を行うことができる。多数の特徴を提供するために、上述した種々の実施形態の各々は他の既述の実施形態と組み合わせることができる。さらに、本発明の装置と方法の多数の個別の実施形態を上述したが、本明細書ではこれは本発明の原理の応用の単なる例として示されているに過ぎない。たとえば「マスタ」、「スレーブ」、「列」およびこれに関連する用語は、複数の視覚システムプロセッサの間の通信の種々の階層的および／または組織的構成の例を意味するに過ぎず、特定の構造的構成の絶対的定義として受け取られるべきではない。さらに、本明細書で述べた種々のプロシージャおよびプロセスはハードウェア、コンピュータ可読プログラム命令を含むソフトウェア、またはハードウェアとソフトウェアの組合せを用いて実装され得る。したがって、以上の説明は単なる例示であり、本発明の範囲を制限するものと受け取ってはならない。
【図１】
0005957168.tif 000002
【図２】
0005957168.tif 000003
【図３】
0005957168.tif 000004
【図４】
0005957168.tif 000005
【図５】
0005957168.tif 000006
【図６】
0005957168.tif 000007