(58)【調査した分野】(Int.Cl.,DB名)
前記学習モードは、前記編集ウィンドウ及び前記結果ウィンドウを含む複数のウィンドウにおいて対応する要素を識別するために使用されるウィンドウ間自動スクロール関連付けを定義して記録する、請求項1に記載のマシンビジョン検査システム。
インジケータにより前記結果ウィンドウに表示された前記第1の結果セットのそれぞれのうちの少なくとも1つのメンバをマークすることは、少なくとも1つの命令表現を強調表示することを含む、請求項1に記載のマシンビジョン検査システム。
前記第1のパートプログラム命令セットに対応する前記第1の命令表現のセット、及び、前記クライアントに影響するパートプログラム命令セットに対応する、前記クライアントに影響する命令表現セットは、同一のパートプログラム命令セットに対応する、同一の命令表現セットである、請求項11に記載のマシンビジョン検査システム。
前記有効なコンテキストが前記選択された少なくとも1つの命令において確立された場合に、前記学習モードユーザインタフェースが、前記パートプログラム表現において示された前記選択された少なくとも1つの命令に近いコンテキスト状態インジケータを表示するように構成されており、前記コンテキスト状態インジケータは、有効なコンテキストが標的位置において確立されたことを示すようにセットされるように、前記学習モードが構成される、請求項16に記載のマシンビジョン検査システム。
【発明を実施するための形態】
【0020】
説明
図1は、本明細書に記載の方法により使用可能な例示的な1つのマシンビジョン検査システム10のブロック図である。マシンビジョン検査システム10はビジョン測定機12を含み、ビジョン測定機12は、制御コンピュータシステム14とデータ及び制御信号を交換すべく動作可能に接続される。制御コンピュータシステム14は、モニタ又はディスプレイ16、プリンタ18、ジョイスティック22、キーボード24、及びマウス26などとデータ及び制御信号を交換すべくさらに動作可能に接続される。モニタ又はディスプレイ16は、マシンビジョン検査システム10の動作の制御及び/又はプログラムに適したユーザインタフェースを表示し得る。
【0021】
ビジョン測定機12は、可動式ワークピースステージ32と、光学撮像システム34とを含み、光学撮像システム34はズームレンズ又は交換式レンズを含み得る。ズームレンズ又は交換式レンズは一般に、光学撮像システム34により提供される画像に様々な倍率を提供する。マシンビジョン検査システム10は一般に、上述したQUICK VISION(登録商標)シリーズのビジョンシステム及びQVPAK(登録商標)ソフトウェア並びに同様の先端技術の市販されている精密マシンビジョン検査システムに類似する。好適なマシンビジョン検査システム10は、本願と同じ譲受人に譲渡された米国特許第7,454,053号及び同第7,324,682号並びに2008年12月23日に出願された米国仮特許出願公開第12/343,383号及び2009年11月29日に出願された米国仮特許出願公開第12/608,943号にも記載されている。
【0022】
図2は、
図1のマシンビジョン検査システムと同様のマシンビジョン検査システム100の制御システム部120と、ビジョン構成要素部200とのブロック図であり、本発明による様々な実施形態に使用可能な機能を含む。より詳細に後述するように、制御システム部120は、ビジョン構成要素部200の制御に利用される。
図2に示されるように、ビジョン構成要素部200は、光学アセンブリ205と、光源220、230、及び240と、中央透明部212を有するワークピースステージ210とを含む。ワークピースステージ210は、ワークピース20を位置決めし得るステージ表面に略平行する平面内にあるX軸及びY軸に沿って制御可能に移動可能である。光学アセンブリ205は、カメラ系260と、交換式対物レンズ250とを含み、レンズ286及び288を有するタレットレンズアセンブリ280を含み得る。タレットレンズアセンブリに対する代替として、固定レンズ、又は手動で交換可能な倍率変更レンズ、又はズームレンズ構成等を含み得る。光学アセンブリ205は、さらに後述するように、制御可能なモータ294を使用することにより、X軸及びY軸に略直交するZ軸に沿って制御可能に移動可能である。
【0023】
マシンビジョン検査システム100を使用して撮像すべき複数のワークピース20を保持したトレイ又は固定具は、ワークピースステージ210に配置される。ワークピースステージ210は、光学アセンブリ205と相対移動すべく制御し得、それにより、交換式対物レンズ250は、ワークピース20上の位置間及び/又は複数のワークピース20間で移動する。透過照明光220、落射照明光230、及び斜め照明光240のうちの1つ又は複数は、光源光222、232、又は242のそれぞれを発して、1つ又は複数のワークピース20を照明する。光源光はワークピース光255として反射又は透過し、交換式対物レンズ250及びタレットレンズアセンブリ280を通過し、カメラ系260に集められる。カメラ系260により捕捉されたワークピース20の画像は、信号線262上で制御システム部120に出力される。光源220、230、及び240は、信号線又はバス221、231、及び241のそれぞれを通して制御システム部120に接続し得る。画像の倍率を変更するには、制御システム部120は、信号線又はバス281を通して、軸284に沿ってタレットレンズアセンブリ280を回転させて、タレットレンズを選択し得る。
【0024】
様々な例示的な実施形態では、光学アセンブリ205は、制御可能なモータ294を使用してワークピースステージ210に対して垂直なZ軸方向に移動可能であり、制御可能なモータ294は、アクチュエータ、接続ケーブル等を駆動して、光学アセンブリ205をZ軸に沿って移動させ、カメラ系260により捕捉されるワークピース20の画像のフォーカスを変更する。本明細書で使用される場合、Z軸という用語は、光学アセンブリ205により得られた画像のフォーカスに使用されることを意図される軸を指す。制御可能なモータ294は、使用される場合、信号線296を介して入出インタフェース130に接続される。
【0025】
図2に示されるように、様々な例示的な実施形態では、制御システム部120は、コントローラ125と、電源部128と、入出インタフェース130と、メモリ140と、ワークピースプログラム生成・実行器150と、レコーダ/変換器155と、学習モード部156と、実行モード部157と、編集部160と、代理データマネージャ180と、プログラム状態マネージャ185と、ノードマネージャ190と、ウィンドウ間自動スクロール部195と、結果ウィンドウ部196と、を含む。これらの構成要素のそれぞれ並びに後述する追加の構成要素は、1つ若しくは複数のデータ/制御バス及び/又はアプリケーションプログラミングインタフェースにより、或いは様々な要素間の直接接続により相互接続し得る。
【0026】
入出力インタフェース130は、撮像制御インタフェース131と、移動制御インタフェース132と、照明制御インタフェース133と、レンズ制御インタフェース134とを含む。移動制御インタフェース132は、位置制御要素132aと、速度/加速度制御要素132bとを含み得るが、そのような要素は統合且つ/又は区別不可能であってもよい。照明制御インタフェース133は、例えば、マシンビジョン検査システム100の様々な対応する光源の選択、電力、オン/オフスイッチ、及び該当する場合にはストローブパルスタイミングを制御する。
【0027】
メモリ140は、画像ファイルメモリ部141と、1つ又は複数のパートプログラム142PP等を含み得るワークピースプログラムメモリ部142と、ビデオツール部143とを含む。ビデオツール部143は、ビデオツール部143aと、他のビデオツール部とを含み、他のビデオツール部は、対応する各ビデオツールのGUI、画像処理動作等を決定する。多くの既知のビデオツールが、上述したQUICK VISION(登録商標)シリーズのビジョンシステム及び関連付けられたQVPAK(登録商標)ソフトウェア等の市販のマシンビジョン検査システムに含まれる。ビデオツール部143は関心領域(ROI)生成器143xも含み、関心領域生成器143xは、ビデオツール部143に含まれる様々なビデオツールで動作可能な様々なROIを画定する自動、半自動、及び/又は手動の動作をサポートする。
【0028】
一般に、メモリ部140は、ワークピース20の取得画像が所望の画像要素を有するように、ワークピース20の画像を捕捉又は取得するビジョンシステム構成要素部200の動作に使用可能なデータを記憶し得る。メモリ部140は、検査結果データも記憶し得、取得画像に対して様々な検査動作及び測定動作を手動又は自動で実行して(例えば、部分的にビデオツールとして実施される)、入出力インタフェース130を通して結果を出力すべくマシンビジョン検査システム100を動作させるために使用可能なデータをさらに記憶し得る。メモリ部140は、入出力インタフェース130を通して動作可能なユーザインタフェースを定義するデータを含むこともできる。
図14〜
図19を参照してより詳細に後述するように、一実施形態では、パートプログラム編集時、編集の継続に必要なコンテキストを生成するために、パートプログラムのすべてのステップを実行する必要がなく、前に保存されたデータを代理データとして使用して、特定のコンテキストをシミュレートすることができる。メモリ部140は、そのような代理データを記憶することもできる。
【0029】
透過照明光220、落射照明光230、及び斜め照明光240のそれぞれの信号線又はバス221、231、及び241はすべて、入出力インタフェース130に接続される。カメラ系260からの信号線262及び制御可能なモータ294からの信号線296は、入出力インタフェース130に接続される。画像データの搬送に加えて、信号線262は、画像取得を開始する信号をコントローラ125から搬送し得る。
【0030】
1つ又は複数のディスプレイ装置136(例えば、
図1のディスプレイ16)及び1つ又は複数の入力装置138(例えば、
図1のジョイスティック22、キーボード24、及びマウス26)も、入出力インタフェース130に接続することができる。ディスプレイ装置136及び入力装置138を使用して、ユーザインタフェースを表示することができ、ユーザインタフェースは、検査動作の実行及び/又はパートプログラムの変更に使用可能な様々なユーザインタフェース機能を含み、カメラ系260により捕捉された画像を表示し、且つ/又はビジョンシステム構成要素部200を直接制御し得る。特に、本発明の様々な例示的な実施形態によれば、ディスプレイ装置136及び入力装置138を使用して、マシンビジョン検査システム100でのパートプログラムの高速、効率的、直観的、且つ柔軟な編集を可能にするために使用可能な様々なユーザインタフェース機能を提示する。
【0031】
ワークピースプログラム生成・実行器150、レコーダ/変換器155、学習モード部156、実行モード部157、編集部160、代理データマネージャ180、プログラム状態マネージャ185、ノードマネージャ190、及びウィンドウ間自動スクロール部195はすべて、一実施形態では、コントローラ125にリンクされた汎用マシンコントローラブロックMCの部分であるとみなされる。さらに、クライアントウィンドウ部197をコントローラ125にリンクし得る。クライアントウィンドウは、いくつかの実施形態では、制御システム部120の外部にあると見なされるが、制御システム部120と通信して、相互動作し得る。ワークピースプログラム生成・実行器150は、パートプログラムの作成及び実行を担当する。「ワークピースプログラム」及び「パートプログラム」という用語を本明細書では同義で使用し得ることが理解されよう。
【0032】
ワークピースプログラム生成・実行器150の動作によれば、様々な例示的な実施形態では、ユーザは、マシンビジョン検査システム100を利用して、ワークピース20のパートプログラムを作成する場合、ワークピースプログラミング言語を使用して明示的に命令を自動的、半自動的、又は手動でコーディングすることにより、且つ/又は学習モードでマシンビジョン検査システム100を動作させて(例えば、学習モード部156により制御される)、所望の画像取得トレーニングシーケンスを提供することで命令を生成することにより、パートプログラム命令を生成する。例えば、トレーニングシーケンスは、ワークピース要素を視野(FOV)内に位置決めすること、光レベルを設定すること、フォーカス又はオートフォーカスすること、画像を取得すること、及び画像に適用される検査トレーニングシーケンスを提供すること(例えば、ビデオツールを使用して)を含み得る。学習モードは、シーケンスを捕捉又は記録し、対応するパートプログラムステップ(すなわち、命令)に変換すべく動作する。これらのパートプログラムステップは、パートプログラムが実行モードで実行される場合(例えば、実行モード部157により制御される)、マシンビジョン検査システムにトレーニングされた画像の取得を再生させ、検査動作に、パートプログラム作成時に使用されたワークピースに一致する1つ又は複数のワークピースを自動的に検査させる。
【0033】
レコーダ/変換器155は、マシン動作をパートプログラムコードに変換するために利用される。換言すれば、ユーザが動作(例えば、ワークピースの要素の測定に使用されるビデオツールの変更等)を実行する場合、命令が生成され、命令はマシン可読言語に変換され、逆変換を実行することもできる。より詳細に後述するように、本明細書に開示される特定の実施形態では、パートプログラム内の特定の命令を、ユーザインタフェース内の命令表現に変換することもできる。いくつかの実施形態では、パートプログラム命令は、マークアップ型言語コードで書くことができる。特定の一実施形態例では、マークアップ言語コードはMIMLコードであり得る。編集部160は、より詳細に後述するように、パートプログラム表現ウィンドウを含み得る編集ユーザインタフェース部160ui内のパートプログラムの編集に関連する様々な動作及びユーザインタフェース機能を提供又はアクティブ化する。
【0034】
代理データマネージャ180は、本発明のすべての実施形態を実施するために、存在する必要はない。しかし、代理データマネージャ180は、いくつかの実施形態では、本発明と組み合わせて使用し得る。簡単に言えば、代理データマネージャ180は代理データにリンクし、代理データは、本発明によれば、パートプログラムに記録し得る。特定の実施形態では、代理データマネージャ180は、通常生成される出力から代理データを取得し、代理データをパートプログラムへの書き込みに提供することを担当する。代理データマネージャ180についてはより詳細に後述する。
【0035】
プログラム状態マネージャ185は、一実施形態では、プログラムが保護されるか、又は保護されないかを管理する。一実施態様では、保護されないパートプログラムは、記憶された代理データを含み得、その一方で、保護されるパートプログラムは任意の代理データが除去されている。一実施形態例では、保護されるプログラムは、工場で実行モードで利用し得るような、編集プロセスが完了したプログラムである。一実施形態では、ユーザは、保護すべきパートプログラムを選択し得、その時点で、プログラム状態マネージャ185は、そのパートプログラムが実行時に過度の実行ステップを負担しないように、すべての代理データを自動的に除去する。プログラム状態マネージャ185は、代理データがパートプログラムに記憶されたままであるような、プログラムが保護されない場合も担当し、パートプログラムが編集部160により呼び出される場合、代理データは利用可能であると示される。
【0036】
一実施形態では、ノードマネージャ190は、パートプログラム内のノードに割り当てられたノード番号の管理を担当する。一実施態様では、パートプログラムの表現内で、各命令表現にノード番号が割り当てられる。特定の実施態様では、親ノード及び子ノードがある組織的ツリー構造を利用し得る。特定の実施態様では、レコーダ/変換器155により生成されるパートプログラム表現のあらゆるラインに、ノードマネージャ190によりノード番号又は一意保証識別子等が割り当てられる。より詳細に後述するように、いくつかの実施形態では、ウィンドウ間自動スクロール部195は、ノードマネージャ190により割り当てられたノード番号を利用して、関連付けられたパートプログラム要素の関連する要素及び対応する編集機能を異なるウィンドウ内に同時に表示し得る。換言すれば、ユーザが、ワークピースのどの測定がパートプログラム内のどの命令表現及び符号化命令に関連するかを見たい場合、ウィンドウ間自動スクロール部195は、関連するノード番号に対応するパートプログラム表現内の関連するライン及び/又は符号化命令内まで、各ウィンドウを自動的にスクロールする。
【0037】
結果ウィンドウ部196は、結果ウィンドウユーザインタフェース196ui内でマシンビジョンシステム検査動作により実行される測定の結果の表示を含む、パートプログラムの編集に関連する様々な動作及びユーザインタフェースを提供又はアクティブ化する。しかし、より一般的には、結果ウィンドウ部196及び/又は結果ウィンドウユーザインタフェース196uiは、本開示の他の箇所に記載される様々な特徴及び属性並びに拡張を含み得、本開示に図示、記載、且つ/又は参照されるウィンドウ間自動スクロール部の機能又は属性に基づいて、当業者には明らかな、代替形態である。
【0038】
クライアントウィンドウ部197は、クライアントウィンドウユーザインタフェース197ui内でマシンビジョンシステム検査動作により実行される測定に関連する機能の表示を含むパートプログラムの編集に関する様々な動作及びユーザインタフェース機能を提供又はアクティブ化する。しかし、より一般的には、クライアントウィンドウ部197及び/又はクライアントウィンドウユーザインタフェース197uiは、本明細書の他の箇所開示される様々な機能及び属性を備え得るとともに、本開示に図示、記載、且つ/又は参照されるウィンドウ間自動スクロール部の機能又は属性に基づいて当業者には明らかな拡張及び代替形態を備え得る。クライアントウィンドウは、本発明のいくつかの実施形態では、存在する必要がない。クライアントウィンドウには、マシンビジョン検査システムの基本動作には必須ではないが、強化機能又は使用し易さを提供し得るプログラム又はルーチンと関連づけられることもある。
図4〜
図7に示されるグラフィックビューウィンドウにより表されるグラフィックビューウィンドウ部は、クライアントウィンドウ部197の一例である。
図3に示されるように、クライアントウィンドウは、結果ウィンドウに関して本明細書に開示されるものと略同様であるウィンドウ間自動スクロールユーザインタフェース機能及び属性を有し得る。
【0039】
さらに
図2に関して、
図2の多くの特徴は、先に参照された米国出願において同様に図示、記載、且つ/又は参照される要素である、それらの同様又は略同様の対応要素の説明に基づいて理解し得る。より詳細に後述する編集部160及び/又は編集UI部160uiは、参照された文献に記載される類似機能と同様又は同一の多くの機能を有し得る。ウィンドウ間自動スクロール部195は、本明細書に開示される様々な機能及び属性を備え得るとともに、本開示に図示、記載、且つ/又は参照されるウィンドウ間自動スクロール部の機能又は属性に基づいて当業者には明らかな拡張及び代替形態を備え得る。さらに、ウィンドウ間自動スクロール部195は代替として、自動スクロールマネージャと呼ぶこともでき、参照された文献に記載の自動スクロールマネージャに関連して記載される機能と同様のいくつかの機能を有し得る。
【0040】
編集部160、ウィンドウ間自動スクロール部195、ノードマネージャ190、及びいくつかの実施形態では、代理データマネージャ180が互いに協働して、本明細書に開示される様々な機能を提供して、マシンビジョン検査システムのパートプログラム編集環境を強化することが理解されよう。いくつかの実施形態では、これらの様々な部分は代替として、互いの部分であるか、又は結合され、且つ/又は区別不可能なように構成してもよい。したがって、
図2に示されるこれらの部分の構成が単なる例示であり、限定ではないことが理解されよう。
【0041】
図3は、ウィンドウ間自動スクロール部195(例えば、
図2に示されるウィンドウ間自動スクロール部195)により実施されて、本明細書に開示されるウィンドウ間自動スクロール機能を提供し得る通信ルーチン及び/又は動作の一実施形態の機能概略表現300である。
図3は、ウィンドウ間自動スクロール部195、プログラム表現ウィンドウ部176pi、結果ウィンドウ部196、及びクライアントウィンドウ部197を概略的に示す。「ウィンドウ部」が、表示されたユーザインタフェースウィンドウを示すとともに、動作を提供する関連付けられた機能及び基本ルーチンも示し得ることを理解されたい。ウィンドウ部は、本明細書では単にウィンドウと呼ぶこともある。プログラム表現ウィンドウ部176piは、本明細書及び/又は参照された文献では、プログラム命令表現ウィンドウ又は編集ウィンドウと呼ばれることもある。
【0042】
図3に示される実施形態では、ウィンドウ間自動スクロール部195は、プログラム表現ウィンドウ選択イベント通知SE及びプログラム表現ウィンドウ自動スクロール通知ASを通して、プログラム表現ウィンドウ部176piと対話する。ウィンドウ間自動スクロール部195は、結果ウィンドウ選択イベント通知SE及び結果ウィンドウ自動スクロール通知ASを通して、クライアントウィンドウ部197と対話する。ウィンドウ間自動スクロール部195は、クライアントウィンドウ選択イベント通知SE及びクライアントウィンドウ自動スクロール通知ASを通して、クライアントウィンドウ部197と対話する。様々な選択イベント通知SEは独立して始動する。すなわち、別のウィンドウ内に関連付けられた要素を有し得るタイプの要素の選択のホストであるいかなるウィンドウも、選択イベントにより始動したそのウィンドウのルーチン又は動作に基づいて、選択に応答して選択イベント通知SEを発行し得る。
【0043】
例えば、選択イベントは、ユーザがプログラム表現ウィンドウ内の命令表現を選択すること、又は結果ウィンドウ内の結果を選択すること、又はクライアントウィンドウ内のグラフィカル要素を選択することであり得る。選択は、ユーザインタフェース入力装置と、ユーザインタフェース内での要素のマウスクリック等の既知の要素選択方法とを使用することにより達成し得る。対照的に、様々な実施形態では、各該当ウィンドウへの自動スクロール通知ASは、任意の選択イベント通知に応答して始動し、一般に、すべての該当ウィンドウに送信される(しかし、現在の選択イベント通知を作成したウィンドウに自動スクロール通知を送信する必要はない)。
【0044】
自動スクロール通知ASは、選択イベント通知SEにより始動するインター自動スクロール部のルーチン又は動作に基づく。自動スクロール通知ASの受信に応答して、ウィンドウは、より詳細に後述するように、選択始動イベント通知SEを発行したウィンドウ内で選択された特定の要素に関連付けられた特徴又は要素を、そのウィンドウに表示し、且つ/又は強調表示する。本明細書に開示されるシステム及び方法の新規性の一態様は、マシンビジョンシステムパートプログラミング及び編集環境の提供に関連して本明細書に開示される様々な属性及び機能の組み合わせにある。そのような組み合わせは、本明細書に開示される関連パートプログラミングユーザインタフェース機能を提供するために、マシンビジョン検査システムの特定の動作複雑性及びプログラミング複雑性に関連して、以前には意図も達成もされていなかった。
【0045】
一実施形態では、
図3は、XML準拠言語(例えば、ウェブページ間の通知に使用される)を使用して実施されることがある既知の「発行者−購読者(publisher-subscriber)」方法を使用して実施し得る。様々な実施形態では、発行者−購買者方法は、本明細書に開示される機能をサポートするリストに基づく方法、又はブロードキャストに基づく方法、又はコンテンツに基づく方法等の方法を利用することにより実施し得る。マシンビジョン検査システムでは、発行者及び購買者は一般に、同じ処理空間に配置され、「発行者」は「購買者」ウィンドウの識別子を知ることが可能である。そのような場合に当てはまり、参照される米国特許第8,028,085号(「085号特許」)には、本明細書に開示される機能をサポートするように構成し得る低遅延(low latency)方法が記載されている。
【0046】
様々な実施形態では、学習モード中、パートプログラム命令が作成され、且つ/又は記録される際、様々なウィンドウ内の関連付けられた、又は対応する機能を確立し得る。例えば、一実施形態では、対応する各機能に、関連付けを確立し記録する手段として、各ウィンドウ部内で同じ「識別子」を割り当てるか、又は同じ「識別子」で記し得る。そのような実施形態では、選択イベント通知SEは、選択された要素の識別子を含み得、その識別子は自動スクロール通知ASを通して渡すことができ、それにより、受信側ウィンドウは、より詳細に後述するように、その識別子に基づいて関連付けられた特徴又は要素まで自動的にスクロール(例えば、表示し、且つ/又は強調表示)し得る。
【0047】
図4は、本明細書に開示される原理に従って構成し動作することができる複数のウィンドウを含む編集環境の一実施形態を含む学習モードユーザインタフェース400の図である。編集環境は、パートプログラム表現ウィンドウ420(様々な実施形態では、編集ウィンドウ420として使用し得、そのように呼ばれ得る)内に示されるパートプログラム命令表現(例えば、「ボックスツール」を使用して「LINE−1」と命名された「測定ライン」等)と、結果ウィンドウ430内に示されるパートプログラム命令からの測定結果(例えば、測定結果座標X=128.1750409)と、グラフィックビュークライアントウィンドウ440内でCADモデルに重ねられて示される様々な関連測定要素の表現(例えば、ライン441、ライン442、及び両矢印で示されるライン間の距離443)とを含む。このユーザインタフェース400は、参照された文献に記載される対応する要素を有し、その様々な実施形態は、参照内の説明に基づいてさらに理解し得る。一般に言えば、ウィンドウ430及び400内で生成される特徴又は要素は、パートプログラム表現ウィンドウ420内に示される命令表現に対応する記録パートプログラム命令の学習モード実行により生成される。
図4に示される状態では、いずれの要素もユーザにより選択されていない。
【0048】
ユーザインタフェース400は、ツールバー450、ツールバー460、ステージ位置表示470、及び視野表示480も含む。ツールバー450は、ユーザインタフェース400の上部に水平に配置された様々なユーザツール(例えば、測定ビデオツール)を備える。ツールバー460は、ユーザインタフェースの右側部分に垂直に配置されるユーザツール(例えば、位置合わせツール及び拡大ツール)を備える。ステージ位置表示470は、ステージ32の位置を示すX、Y、及びZ座標を表示する。視野表示480は、カメラ260により撮像されるマシンビジョン検査システム100の視野を表示するとともに、参照として、ユーザにより定義され記録される際に、ボックスツール命令表現422Aに対応するボックスツール関心領域が現れるであろう位置を破線輪郭で概略的に表示する。
【0049】
パートプログラム表現ウィンドウ420内に示されるパートプログラム命令表現は、親ノード命令表現421、422、及び423を含む。親ノード命令表現421は、子ノード命令表現421A及び421Bを含む。親ノード命令表現421は、LINE−1として表されるライン要素441を測定するために、ボックスツールが開かれることを示し、命令表現421Aは、ユーザがボックスツールを利用して、LINE−1のエッジ点を特定することを示し、次に、命令表現421Bにより示されるようにエッジ点を利用して、LINE−1を定義する。親ノード命令表現422は、子ノード命令表現422A及び422Bを含む。親ノード命令表現422は、LINE−2として表されるライン要素442を測定するために、ボックスツールが開かれることを示し、命令表現422Aは、ユーザがボックスツールを利用して、LINE−2のエッジ点を特定することを示し、次に、命令表現422Bにより示されるようにエッジ点を利用して、LINE−2を定義する。命令表現423は、「DIST」として表される距離443が、LINE−1とLINE−2との間で特定されることを示す。結果ウィンドウ430は、命令表現421、422、及び423のそれぞれに対応する測定結果431、432、及び433を表示する。
【0050】
図5は、本明細書に開示される原理に従った、一実施形態の一態様による
図4のユーザインタフェースの動作を示す図である。簡単に言えば、パートプログラム命令表現422Bは、パートプログラム表現ウィンドウ420内で強調表示され、関連するライン測定結果LINE−2が結果ウィンドウ430内で強調表示され、関連するライン要素441がクライアントウィンドウ440内で強調表示される。様々な実施形態では、ユーザが、ウィンドウの1つ内のこれらの要素のうちの任意の1つを選択した場合、その他の対応する要素も、有利には、その他のウィンドウ内で強調表示されるか、又はその他の方法でマークされる(例えば、図示のように)。
【0051】
図3を参照して図示され説明される方法を使用して、ウィンドウ間に必要な通知を提供し得、各ウィンドウは、対応する強調表示及び/又はマークを提供するルーチン又は動作を含み得る。これは、上述した利点を提供する。一実施形態では、結果ウィンドウ430又はクライアントウィンドウ440内の要素の選択は、関連付けられた選択イベント通知を受信すると(例えば、
図3を参照して説明するように)、パートプログラム表現ウィンドウへの制御の移動及び/又はそのウィンドウ内の対応するパートプログラム命令表現の選択に繋がり、それにより、編集動作が即座に容易になる。
【0052】
図6は、本明細書に開示される原理に従った、一実施形態の別の態様による
図4のユーザインタフェースの動作を示す第2の図である。
図6は、様々なウィンドウ内の対応する要素の関係の同様の例を示す。簡単に言えば、パートプログラム命令表現423(ライン間の距離測定)が選択され、したがって、パートプログラム表現ウィンドウ420内で強調表示され、関連する距離測定結果DISTが、結果ウィンドウ430内で強調表示され、関連する距離443が、クライアントウィンドウ440内で強調表示される。いくつかの実施形態では、パートプログラム命令表現423の実行は(例えば、ビデオツールのトレーニング又は動作結果の確認等のため)、強調表示し得る限り、対応する命令を、他の該当ウィンドウ内の対応する要素と共に「選択された」状態に維持し得る。
【0053】
図7は、本明細書に開示される原理に従った、一実施形態の別の態様による
図4のユーザインタフェースの動作を示す第3の図である。
図7は、クライアントウィンドウ440内の機能の選択により、パートプログラム表現ウィンドウ420(すなわち、編集ウィンドウ)内の対応する要素がマークされるが、上述した実施形態とは対照的に、結果ウィンドウ430に影響しない例を示す。もちろん、いくつかの実施形態では、結果ウィンドウ430内の要素の選択も同様の挙動を有し得る。すなわち、編集ウィンドウ420には影響し得るが、所望の場合、クライアントウィンドウ440は影響を受け得ない)。すべてのウィンドウには同時に影響しないそのような実施形態は、いくつかの特定のウィンドウ型又はプログラミング状況で利点を有し得る。より具体的には、
図7に示される実施形態では、パートプログラム命令表現421Bは、関連するライン測定結果LINE−1が結果ウィンドウ430内で選択され(いくつかの実施形態では、且つ強調表示され)る場合、パートプログラム表現ウィンドウ420内で強調表示されるが、関連する距離443はそのときに、クライアントウィンドウ440内で強調表示されない。
【0054】
図5〜
図7に関して、任意のウィンドウが、選択イベント通知のときに「視野外」である要素(例えば、大きなパートプログラム、又はワークピースCAD画像等の場合)を含み得ることを理解されたい。ユーザは、選択前に任意のウィンドウのコンテンツを個々にスクロールし得、そのとき、他のウィンドウのコンテンツを調整する必要はない。次に、様々な実施形態では、選択イベント通知時、任意のウィンドウ内の対応する要素がそのとき、表示エリアにない場合、そのウィンドウのルーチン又は動作は、コンテンツを、選択イベント通知に対応する要素まで自動的にジャンプ又はスクロールさせる。すなわち、1つのウィンドウ内のユーザにより選択された要素に関連する、別のウィンドウ内の要素が、各ウィンドウで可視ではない場合、学習モードユーザインタフェースは、ユーザにより選択された要素に関連する要素が各ウィンドウで可視になるまで、各ウィンドウ内の表示を自動的に「スクロール」するように構成し得る。「スクロール」又は「自動スクロール」という用語が本明細書において使用されるが、これらの用語が便宜上使用されるだけであり、限定ではないことも理解されたい。より一般的には、選択された要素に対応する要素は、単に所望のコンテンツを有するウィンドウの再生等を含め、任意の都合のよい、且つ/又は既知の方法により、各ウィンドウで可視にし得る。
【0055】
図8は、
図4〜
図7の命令表現のうちのいくつかに対応し得る、パートプログラムのマークアップ言語コード命令を含む
図800である。特に、
図8は、自動的に定義される識別子の実施態様を示し、この識別子は、いくつかの実施形態では、上述し、
図9〜
図13のうちのいくつか又はすべてに関連してさらに後述されるユーザインタフェースの同期「自動スクロール」機能を実施するために使用し得る。特に、
図8は、XML準拠コード言語を含む特定の実施態様を示し、パートプログラム命令が記録される際、LINE−2の測定に対応する「ノードID」値805又は識別子805が自動的に生成され、パートプログラム命令に挿入される。
【0056】
図8に示されるように、LINE−2の終わりに関連付けられた点は、データ810の部分として示される。一実施形態では、ウィンドウ間自動スクロール部はノードIDを使用して、命令の実行に基づいて、パートプログラム表現ウィンドウ、及び/又は結果生成結果ウィンドウ、及び/又はクライアントウィンドウに表示される関連付けられたパートプログラム命令及び対応する命令表現に割り当て得る。したがって、様々なウィンドウ内の関連する機能は、ウィンドウ間自動スクロール部で関連付けられることになる。
【0057】
或いは、結果ウィンドウ、及び/又はクライアントウィンドウ、及び/又はパートプログラム表現ウィンドウ(すなわち、編集ウィンドウ)は、表示要素を生成するときに、各自の要素識別子を生成し、この情報をウィンドウ間自動スクロール部に渡し得、ウィンドウ間自動スクロール部は、記憶された識別子の関連付け表等内の様々な識別子の関連付けを形成し得る。いくつかの実施形態では、パートプログラム命令表現内のパートプログラム命令をマシンビジョン検査システム制御ソフトウェアの単一のアプリケーション又はサブルーチン内で処理し得、それにより、パートプログラム命令又は対応するパートプログラム命令表現を、これらの要素の両方に関連してウィンドウ間自動スクロール部が使用可能な単一の識別子により表し得ることを理解されたい。
【0058】
図9〜
図13について簡単に後述する。
図9〜
図13の様々な実施態様に関連付けられた様々な機能及び属性は、本明細書に含まれる様々な機能及び開示に鑑みて
図9〜
図13を解釈することにより、並びに参照された文献に含まれる説明及び開示を考慮することにより実現し得る。
【0059】
図9は、上述し、さらに後述する原理に従って動作するマシンビジョンシステムプログラム編集環境を提供するルーチン900の一実施形態を示すブロック図である。
【0060】
図9に示されるように、ブロック910において、ユーザ入力を受信して、マシンビジョン検査システムの動作を制御し、被制御動作に対応する関連付けられたパートプログラム命令を記録して、パートプログラムを作成すべく動作可能なように構成された学習モードが提供され、学習モードは学習モードユーザインタフェースを含み、学習モードユーザインタフェースは編集ユーザインタフェース部を含み、編集ユーザインタフェース部は、編集ウィンドウ内のパートプログラム命令の編集可能なパートプログラム表現を含み、パートプログラム表現は命令表現を含み、結果ウィンドウが提供され、結果ウィンドウは、マシンビジョン検査システムの被制御動作により提供される結果を含む各結果を受信して表示する。
【0061】
ブロック920において、結果ウィンドウ内の各第1の結果セットを決定して表示する動作を含む、マシンビジョン検査システムの各第1の被制御動作セットを提供するユーザ入力を受信した場合、動作を自動的に提供すべく動作可能なように学習モードが構成され、動作は、
・結果ウィンドウ内の各第1の結果セットを決定して表示する動作を含む各第1の被制御動作セットに対応する各第1のパートプログラム命令セットを記録すること、
・結果ウィンドウ内に各第1の結果セットを表示すること、及び
・結果ウィンドウ内の各第1の結果セットを決定して表示する動作を含む各第1のパートプログラム命令セットに対応する各第1の命令表現セットを定義して表示すること
を含む。
【0062】
少なくとも1つの実施形態又は実施態様では、ルーチンは、ブロック930において説明されるルーチン部分に続くか、又は別の実施形態若しくは実施態様では、
図10において説明されるルーチン部分に対応する代替ブロックAに続く。
【0063】
実施態様のブロック930に示されるように、ウィンドウ間自動スクロール動作セットに従って、結果ウィンドウ及びパートプログラム表現ウィンドウ(編集ウィンドウ)を動作させるユーザインタフェース動作を提供するように、学習モードは構成され、ユーザが結果ウィンドウ内の各第1の結果セットのメンバを選択した場合、ウィンドウ間自動スクロール動作が開始され、ウィンドウ間自動スクロール動作は、各第1の命令表現セットの少なくとも1つの命令表現がパートプログラム表現ウィンドウで可視であり、各第1の命令表現セットの少なくとも1つの命令表現が、インジケータにより編集ウィンドウ内でマークされ、編集ウィンドウ内で、結果ウィンドウ内でユーザにより選択された各第1の結果に対応する少なくとも1つの命令表現を示すように、編集ウィンドウ内の命令表現を調整することを含む。
【0064】
図10は、同様又は同一の機能を提供する特定の実施態様を含む、
図9のブロック930の代替であるルーチン部分900Aを示す流れ図である。ルーチン部分900Aがブロック930に代えて使用される場合、
図9に示されるブロック920及び/又はブロック925の後、ブロック928において、学習モードは、結果ウィンドウ内の各第1の結果セットの少なくとも1つのメンバと、
a)各第1のパートプログラム命令セット及び
b)各第1の命令表現セット
のうちの少なくとも一方の対応するメンバとのウィンドウ間自動スクロール関連付けを定義して記録するように構成される。
【0065】
上述したように、対応するメンバには、実行されると、結果ウィンドウ内の各第1の結果セットを生成するパートプログラム命令が関連付けられる。次に、ブロック930’において、学習モードは、ウィンドウ間自動スクロール関連付けに基づいて、ウィンドウ間自動スクロール動作セットに従って結果ウィンドウ及び編集ウィンドウを動作させるユーザインタフェース動作を提供するように構成され、ユーザが結果ウィンドウ内の各第1の結果セットのメンバを選択した場合、ウィンドウ間自動スクロール動作が開始され、ウィンドウ間自動スクロール動作は、各第1の命令表現セットの少なくとも1つの命令表現がパートプログラム表現ウィンドウ内で可視であり、各第1の命令表現セットの少なくとも1つの命令表現が、インジケータにより編集ウィンドウ内でマークされて、結果ウィンドウ内でユーザにより選択された各第1の結果に対応する、編集ウィンドウ内の少なくとも1つの命令表現を示すように、編集ウィンドウ内の命令表現を調整することを含む。ウィンドウ間自動スクロール動作は、ウィンドウ間自動スクロール関連付けに基づく。ウィンドウ間自動スクロール関連付けは、上述且つ/又は後述するように確立し得る。
【0066】
図11は、
図10のルーチンの部分の一実施形態を示す流れ
図928’である。特に、
図11は、該当するウィンドウ内の対応する要素を識別するために使用し得るように、ウィンドウ間自動スクロール関連付けを定義し記録するために使用可能な動作の一実施形態を示す。
【0067】
ブロック928’Aにおいて、結果ウィンドウ内の各第1の結果セットの少なくとも1つのメンバに関連付けて、少なくとも各第1の結果識別子を自動的に定義して記録し、各第1の結果識別子は、各第1の結果セットの少なくとも1つのメンバに対して一意である。
【0068】
ブロック928’Bにおいて、以下のうちの少なくとも1つが自動的に定義され記録される。
a)少なくとも各第1のパートプログラム命令識別子が少なくとも1つのメンバに対して一意である、各第1の記録パートプログラム命令セットの少なくとも1つのメンバに関連付けて、少なくとも各第1のパートプログラム命令識別子及び
b)少なくとも各第1の命令表現識別子が少なくとも1つのメンバに対して一意である、編集ウィンドウ内の各第1のパートプログラム命令表現セットの少なくとも1つのメンバに関連付けて、少なくとも各第1の命令表現識別子。
【0069】
ブロック928’Cにおいて、少なくとも各第1の結果識別子と、以下のうちの少なくとも一方との関連付けを自動的に定義して記録する。
a)少なくとも各第1のパートプログラム命令識別子及び
b)少なくとも各第1の命令表現識別子。
【0070】
換言すれば、
図10のブロック928を参照して上述した原理に従い、定義され記録される関連付けは、結果ウィンドウ内の特定の結果セットの識別子と、実行されると、結果ウィンドウ内の各第1の結果セットを生成する対応するパートプログラム命令セットの識別子との関連付けである。一実施形態では、識別子は、
図8を参照して上述したように実施し得る。
【0071】
上述したように、結果ウィンドウ、及び/又はクライアントウィンドウ、及び/又はパートプログラム表現ウィンドウ(すなわち、編集ウィンドウ)は、表示要素を生成するときに、各自の要素識別子を生成し、この情報をウィンドウ間自動スクロール部に渡し得、ウィンドウ間自動スクロール部は、記憶された識別子の関連付け表等内の様々な識別子の関連付けを形成し得る。いくつかの実施形態では、パートプログラム命令表現内のパートプログラム命令をマシンビジョン検査システム制御ソフトウェアの単一のアプリケーション又はサブルーチン内で処理し得、それにより、パートプログラム命令又は対応するパートプログラム命令表現を、これらの要素のいずれかに関連してウィンドウ間自動スクロール部が使用可能な単一の識別子により表し得ることを理解されたい。したがって、いくつかの実施形態では、結果が関連付けられた識別子と、対応するパートプログラム命令が関連付けられた識別子とは、同じ識別子であってもよく、ブロック928’Cを参照して上述した関連付け動作は、単に同じ識別子を使用して、様々なウィンドウ内の対応する要素を識別することにより達成される。
【0072】
図12は、
図9及び/又は
図10のルーチンの部分の一実施形態を示す流れ
図1200である。特に、
図12は、ブロック930及び/又は930’の動作を実施するために使用可能な動作の一実施形態を示す。
【0073】
判断ブロック1210において、各結果が(例えば、ユーザがユーザインタフェースを通して結果を選択することにより)結果ウィンドウで選択されたか否かが判断される。各結果が結果ウィンドウ内で選択されていない場合、ルーチンはブロック1220に続き、ブロック1220において、結果ウィンドウが選択イベントに関して監視され、ルーチンは判断ブロック1210に戻る。各結果が結果ウィンドウ内で選択されている場合、ルーチンはブロック1230に続く。
【0074】
ブロック1230において、選択された各結果に関連付けられた対応する各結果識別子が識別される。
【0075】
ブロック1240において、各結果識別子に関連付けられた各パートプログラム命令(PPI)及び/又は各PPI識別子が識別される。一実施形態では、これは、各結果識別子に関連付けられた各パートプログラム命令表現識別子を識別し、次に、各パートプログラム命令表現の土台をなすパートプログラム命令(PPI)を識別する中間ステップを通して達成し得る。
【0076】
判断ブロック1250において、各結果識別子に関連付けられた各PPI及び/又はPPI識別子に対応する命令表現が、パートプログラム表現ウィンドウ内で可視であるか否かが判断される。各結果識別子に関連付けられた各PPI及び/又はPPI識別子に対応する命令表現が、パートプログラム表現ウィンドウ内で可視である場合、ルーチンはブロック1270に続く。各結果識別子に関連付けられた各PPI及び/又はPPI識別子に対応する命令表現が、パートプログラム表現ウィンドウ内で可視ではない場合、ルーチンはブロック1260に続く。
【0077】
ブロック1260において、各結果識別子に関連付けられた各PPI及び/又はPPI識別子に対応する少なくとも1つの命令表現が、パートプログラム表現ウィンドウ内で可視であるように、パートプログラム表現ウィンドウ内の命令表現が調整される。
【0078】
ブロック1270において、ユーザインタフェース内で各PPI及び/又はPPI識別子に対応する命令表現がインジケータでマークされて、結果ウィンドウ内でユーザにより選択された各結果に対応する、編集ウィンドウ内の少なくとも1つの命令表現を示す。
【0079】
図13は、プログラム編集環境を動作させる追加のルーチン及び/又は代替のルーチンの一実施形態を示す。特に、
図13は、編集ウィンドウ内の選択イベントが、結果ウィンドウ内の対応する結果の識別を始動させる動作の一実施形態を示す。
【0080】
判断ブロック1310において、パートプログラム命令(PPI)表現が、パートプログラム表現ウィンドウ内で選択されたか否かが判断される。PPI表現がパートプログラム表現ウィンドウ内で選択された場合、ルーチンはブロック1320に続き、ブロック1320において、選択イベントに関してパートプログラム表現ウィンドウが監視され、ルーチンは判断ブロック1310に戻る。PPI表現が編集ウィンドウで選択された場合、ルーチンはブロック1330に続く。
【0081】
ブロック1330において、選択された各PPI表現に関連付けられた各パートプログラム命令及び/又は各PPI識別子が識別される。
【0082】
ブロック1340において、各PPI及び/又は各PPI識別子に関連付けられた対応する各結果識別子が識別される。
【0083】
判断ブロック1350において、対応する各結果識別子により識別される結果が結果ウィンドウ内で可視であるか否かが判断される。対応する各結果識別子により識別される結果が結果ウィンドウ内で可視である場合、ルーチンはブロック1370に続く。対応する各結果識別子により識別される結果が結果ウィンドウ内で可視ではない場合、ルーチンはブロック1360に続く。
【0084】
ブロック1360において、対応する各結果識別子により識別される結果が結果ウィンドウ内で可視であるように、結果ウィンドウ内で結果が調整される。
【0085】
ブロック1370において、ユーザインタフェースでその結果をインジケータにマークして、パートプログラム表現ウィンドウ内でユーザにより選択される各PPI表現に対応する、結果ウィンドウ内の少なくとも1つの結果を示す。
【0086】
図4〜
図8は、カメラ260により撮像されるマシンビジョン検査システム100の視野を表示するとともに、参照のために、ユーザにより定義され、記録される際、ボックスツール関心領域(例えば、ボックスツール命令表現422Aに対応するボックスツール482及びボックスツール命令表現421Aに対応するボックスツール481)が現れる位置を破線の輪郭で概略的に表示する視野表示480を示す。いくつかの実施形態では、視野表示480が、本明細書に上述された様式と同様にして、パートプログラム表現ウィンドウ(及び/又は他のウィンドウ)内で選択又は強調表示された要素に対応する要素を表示するように同期されたウィンドウとして挙動し得ることを理解されたい。すなわち、パートプログラム命令表現(例えば、ボックスツール命令表現)が編集ウィンドウ内で選択された場合、視野表示480は、その命令の定義に最初に使用された対応するワークピース要素を表示し得る。
【0087】
いくつかの実施形態では、表示画像は、呼び出された保存画像であり得る。前に参照された232号出願には、学習モードでのパートプログラム命令の実行後、「代理データ」が保存される編集部動作が開示されている。そのような代理データは、対応するパートプログラム命令表現(例えば、ボックスツール命令表現)が編集ウィンドウ内で選択される場合(すなわち、その画像内のワークピース要素が最初に、その命令の定義に使用された場合)、視野表示480内に表示し得るように保存されたワークピース画像を含み得る。或いは、代理データは、物理的な位置、レンズ構成、及び照明等を特定して、命令を最初に定義する場合に使用される画像取得状況及び画像の実際の複製を加速化する手段を提供し得る。232号出願に記載のように、この手順は、そのワークピース要素の新しい画像を取得するために、実際のビジョンマシン構成要素の調整が必要な場合とは対照的に、かなりの時間を節約するとともに、衝突の危険性を回避し得る。より一般的には、232号出願に記載される編集部動作は、有利には、本明細書に開示される様々な実施形態と組み合わせて使用して、本明細書に記載される自動スクロール動作が実行された後、適切な場合、代理データ実行により、又は実際モード実行により、又は両方の組み合わせにより、適切なプログラム編集コンテキストを提供し得る。したがって、232号出願の部分が、容易な参照及び理解のために、
図14〜
図19と共に以下に含まれる。232号出願及び他の参照された文献から、さらなる理解を得ることができる。
【0088】
図14は、
図2の編集部160の追加の構成要素を示すブロック図である。
図14に示されるように、編集部160は、編集動作コントローラ174と、編集ユーザインタフェース部176と、エディタコマンド部177と、編集実行部178とを含む。編集動作コントローラ174は、編集機能の動作を制御し、編集ユーザインタフェース部176は、ユーザインタフェース機能を編集機能に提供する。編集ユーザインタフェース部176はプログラム表現ウィンドウ部176piを含み、このウィンドウ部176piは表現ユーザインタフェース機能176rを含み、表現ユーザインタフェース機能176rはノードユーザインタフェース機能176nを含む。プログラム表現ウィンドウ部176piは、
図15に関してより詳細に後述するように、パートプログラム命令表現を含むパートプログラム表現を提供する。一実施形態では、パートプログラム表現はツリー構造で提供し得る。表現ユーザインタフェース機能176Rは、コンテキストの状態及びコンテキストがどのように得られたか(例えば、コンテキストが代理データから生成されたか、それとも実際の実行により得られたか等)に応じて色を変更し得る挿入ポインタ等の機能を提供する。ノードユーザインタフェース機能176Nに関して、一実施形態では、これらはアイコン又はブロークンアイコン(broken icon)等の機能及び色強調表示を含み、ノードがアクティブであるか否か等を示し得る。
【0089】
編集実行部178は、編集プロセス中の様々な実行モードを担当し、代理モード部180と、実際モード部191と、編集実行ユーザインタフェース機能部192とを含む。代理モード部180はノード解析器181を含み、ノード解析器181は代理データ動作181Aと、マシン動作181Bとを含む。より詳細に後述するように、代理モード部180が代理実行モードを動作させる場合、本発明によれば、代理データを利用して、継続する編集動作のコンテキストを生成する。ノード解析器181は、一実施態様では、パートプログラムの実行が標的ノード(例えば、パートプログラム内の変更を行うべき箇所)に達したか否かを判断する。ノード解析器181は、関わるノードの種類に従って、実行されるのが代理データ動作181Aであるか、それとも実際マシン動作181Bであるかを判断する。一般に、標的ノードに達すると、実際マシン動作が実行され、標的ノード前のパートプログラム命令では、代理データ動作を利用して、継続する編集動作に必要なコンテキストのうちの少なくともいくつかを生成し得る。代理データが見当たらない場合、必要なコンテキストを生成するために実際マシン動作を許可/実行するようにユーザを促し得る。一実施態様では、各ノードを解析して、代理データが存在するか否か、代理データ動作に正しい種類のノードであるか否かを含め、代理データ動作を適用可能か否か、代替として、実際マシン動作を利用する必要があるか否かを判断する。
【0090】
実際モード部191は、より従来的に従来のマシンビジョンシステムにより実行される動作を含む。適切な場合、マシン動作181Bの実行のために、代理モード部180が実際モード部191を呼び出すこともできることが理解されよう。実際モード部191は、マシン動作191Aと、データ動作191Bとを含む。マシン動作191Aは、実際マシン動作を実行し(例えば、ビデオツール動作の一環としてステージを移動させ)、その一方で、データ動作191Bは一般にデータを出力する。編集実行ユーザインタフェース機能192は、ユーザインタフェース機能を編集機能の実行のために提供する(例えば、パートプログラムのどの部分が代理データを利用したか、又は実際の実行を通して実行されたか等を示す色分け等の、様々な実行動作の状態についての表示)。
【0091】
エディタコマンド177は、232号出願に詳述される実行セグメント部177Aと、変更部177Bと、挿入/添付部177Cとを含む。一般に、実行セグメント部177Aは、パートプログラムの選択されたセグメントの実際の実行を行う。パートプログラムの選択されたセグメントを実行するために、選択されたセグメントまでの適切なコンテキストを確立しなければならないことが理解されよう。より詳細に後述するように、本発明によれば、代理データを利用することにより、適切なコンテキストを確立し得る。代理データが、パートプログラムの特定の部分に存在しない場合、セグメントを実行して、必要な代理データを生成し得る。従来のマシンビジョンシステムでは、選択されたセグメントまで繋がる適切なコンテキストの必要性により、パートプログラムの先行部分のすべてを実行せずにパートプログラムの分離されたセグメントを実行することが困難であったことが理解されよう。例えば、セグメントがステージの下降を必要とするが、システムがステージの現在のX−Y−Z位置を認識しなかった場合、未知の位置へのステージの下降は勧められるものではないことがある。したがって、従来の実施態様では、通常利用される技法では、中間にあるセグメントの実行を可能にするには、パートプログラム全体を最初から実行し、先行するすべての動作の実行には大量の時間が必要とされ得る。対照的に、本発明によれば、代理データを利用して、編集に適切なコンテキストを確立し得、又は最初からパートプログラム全体を実行する必要なく、パートプログラムのセグメントを実行し得る。
【0092】
変更部177Bは、実行セグメント部177Aの動作と特定の類似性を有する。一般に、パートプログラム内の命令表現が変更に選択される場合、代理モードを、変更すべき命令に先行するパートプログラムの部分に利用し得る。一実施形態では、変更コマンドが、パートプログラム内の命令表現に選択される場合、その命令表現のノードが標的ノードとして指定される。標的ノードに達すると、エディタは代理モードからリアル実行モードに切り替わり(例えば、実際モード部191により制御される)、ノードの第1の関連するパートプログラム命令を実行する。一実施形態では、変更に選択される命令が、子ノードに対応する場合、実際の実行は親ノードで開始されるように指定し得る。特定の一実施形態例では、ボックスツールに関連する子ノードを変更すべき場合、ボックスツールの画像取得のセットアップを含む親ノードは、実際の実行が開始されるべく設定されるノードであり得る。挿入/追加構成要素177Cに関して、挿入が子ノード間である場合、所望の挿入を実行するために、親ノードを実行する必要もあり得る。特定の実施態様では、追加動作は一般に、既存のパートプログラムの末尾で行われる挿入動作の特殊な場合であると見なし得ることが理解されよう。
【0093】
図15は、複数の初期パートプログラム命令表現1551〜1564を有するパートプログラム1510の表現を含む編集インタフェース1500の図である。編集インタフェース1500は、選択バー1520等の様々な測定及び/又は動作選択バーも含む。パートプログラム表現1510の特定の命令表現の動作については
図16に関してより詳細に後述する。
【0094】
図16は、
図15に対応するパートプログラムが実行されたワークピース1615を有する視野ウィンドウ1610の画像を含むユーザインタフェース1600を示す図である。ユーザインタフェース1600は、選択バー1620及び1640、リアルタイムX−Y−Z(位置)座標ウィンドウ1630、光制御ウィンドウ1650、並びにビデオツールパラメータボックス1660等の様々な測定及び/又は動作選択バーも含む。より詳細に後述するように、ワークピース1615の様々な要素は、エッジ点集合PTX、PTY、PT3、及びPT4、ラインXLINE、YLINE、L3、及びL4、原点XYORIGIN、並びに交点I2等の
図15の関連するパートプログラム命令表現に従って特定される。
【0095】
以下の説明では、
図15の初期パートプログラム命令表現351〜364と、
図16のワークピース1615上の対応する要素との両方を参照する。一実施形態では、各命令表現351〜364にはノードが関連付けられ、ノード番号又は識別子が割り当てられる。特定の実施態様では、ツリー構造が利用され、命令表現によっては親ノードが関連付けられるものもあれば、子ノードが関連付けられるものもある。例えば、子ノード命令表現1551A〜1551D、1553A〜1553C、1554A〜1554B、1561A〜1561C、及び1562A〜1562Bのそれぞれには、親ノード命令表現1551、1553、1554、1561、及び1562が関連付けられる。一実施形態では、編集インタフェース1500に表示される命令表現1551〜1564が、パートプログラムのマークアップ言語命令から導出されるアイコン及びラベルを含むことも理解されよう。一実施形態では、パートプログラムのマークアップ言語は、XML準拠コードを含み得る。したがって、命令表現1551〜1564は、
図17A及び
図17Bに関してより詳細に後述するように、実行される関連付けられたコード命令を指す。
【0096】
図15に示されるように、パートプログラム表現1510は、命令表現1551及び1552で開始され、命令表現1551及び1552は、ユーザが手動で、大まかな原点ROP(図示せず)として動作するワークピース1615上の位置を選択し、次に、原点を大まかな原点ROPに位置合わせすることを示す。より具体的には、命令表現1551A、1551B、1551C、及び1551Dは、ユーザが手動ツールをセットアップして利用し、大まかな原点ROPを定義することを示し、命令表現1552は、原点を大まかな原点ROPに位置合わせする。次に、命令表現1553は、ボックスツールがラインXLINEの測定のために開かれることを示す。より具体的には、命令表現1553A及び1553Bは、ユーザがボックスツールをセットアップして(例えば、ステージを指定された位置に移動させ、対応する画像を取得することを含む)利用し、エッジ点PTXを特定することを示す。ボックスツール及び他のエッジ検出ビデオツールの機能及び動作は、当分野で既知であり、前に参照された文献においてより詳細に説明されている。次に、命令表現1553Cはボックスツールにより特定されたエッジ点PTXを利用して、ラインXLINEを定義する。同様に、命令表現1554は、ボックスツールがラインYLINEを測定するために開かれることを示し、命令表現1554Aは、ユーザがボックスツールを利用してエッジ点PTYを特定することを示し、次に、命令表現1554Bにより示されるように、エッジ点PTYを利用して、ラインYILINEが定義される。
【0097】
次に、命令表現1555は、交点XYORIGINが、ラインXLINEとYLINEとの交点において特定されることを示す。次に、命令表現1556は、マシンビジョンシステムが、原点を点XYORIGINに位置合わせするよう命令されることを示す。次に、命令表現1557は、マシンビジョンシステムが、ワークピース1615のX軸をラインXLINEに位置合わせするよう命令されることを示す。
図5A及び
図5Bに関してより詳細に後述するように、且つコメントライン1558に示されるように、命令表現1551〜1557の動作は、追加の測定を実行するためのワークピース1615の正確な位置及び向きを確立する。
【0098】
次に、命令表現1561は、ボックスツールがラインL3を測定するために開かれることを示す。より具体的には、命令表現1561A及び1561Bは、ユーザがボックスツールをセットアップして(例えば、指定された位置までステージを移動させ、対応する画像を取得することを含む)利用し、エッジ点PT3を特定することを示し、次に、命令表現1561Cに示されるように、エッジ点PT3を利用して、ラインL3が定義される。より詳細に後述するように、ラインL3の測定に利用されるボックスツール(すなわち、
図16においてボックスツール1670として示される)及び関連付けられた命令表現1561及び1561A〜1561Cは、
図17A及び
図17B並びに
図9〜
図11Bにおいて、代理データがどのようにして生成され、記憶され、変更されるかを示す例として利用される。
【0099】
図15に戻ると、命令表現1562は、ボックスツールがラインL4の測定のために開かれることを示し、命令表現1562Aは、ユーザがボックスツールを利用してエッジ点PT4を特定し、次に、命令表現1562Bに示されるように、エッジ点PT4を利用してラインL4を定義する。命令表現1563は、ユーザが選択された位置許容差を定義することを示し、命令表現1564は、前に特定されたL3とL4とが交わる交点I2が特定されることを示す。
【0100】
表現1510に対応するパートプログラムが記憶され、終了した後、パートプログラムが編集に呼び出された場合、従来の実施態様では、パートプログラムへの継続した編集に有効なコンテキストを生成するために、パートプログラム全体を最初から実行する必要があった。従来の実施態様は、パートプログラムが編集のために呼び出される都度、命令全体を実行することにより、正確な結果及びパートプログラムを生成したが、すべての命令の実行には大量の時間がかかり得る(特に、ハードウェア対話の特定の時間のかかるプロセスを要する命令等)。より詳細に後述するように、本発明によれば、最初からパートプログラム全体を実行するのではなく、前に保存されたデータを代理データとして使用して、パートプログラムへの継続した編集に有効なコンテキストをシミュレートし得る。
【0101】
換言すれば、一実施形態では、継続する編集がパートプログラムに対して行われており、ワークピース1615の測定を行っている場合、特定のパラメータを知ることが有用である。例えば、ビデオツールの正確な閾値、サイズ、及び位置を知るには、正確なステージ位置、光レベル、倍率等の情報を含む正確なビデオ画像を有する必要がある。一実施形態では、そのような情報は「ハードウェアコンテキスト」の部分であると見なすことができる。さらに、パートプログラムへの継続する編集に対してシーケンスが正確であるか否かを知るために、どの要素が測定されたか、どの部分座標系が利用されているか等を含め、何がすでに行われたかを知ることが有用である。一実施形態では、この情報はソフトウェアコンテキストの部分として見なすことができる。一実施形態では、コンテキストは一般に、固有のインタフェース制御要素がすべて、パートプログラムを変更する準備ができた状態にあるマシンビジョン検査システムのユーザインタフェースを確立することと見なされる。上述したように、正確なコンテキストは、すべてのパートプログラム命令(例えば、表現1551〜1564に対応する)が一般に順に実行されるという点で、パートプログラムが最初に記録されたとき、及び後の実行時でも提供される。上述したように、これは、パートプログラムによりすでに生成されたあらゆる測定及び結果の表示(例えば、ユーザインタフェース1600内にワークピース415に関して示されるように、ラインXLINE、YLINE、L3、L4、並びに交点XYORIGIN及びI2の表示)を含め、パートプログラムへの継続した編集に有効なコンテキストを提供する。
【0102】
より詳細に後述するように、パートプログラム編集時、必要なコンテキストを生成するために、パートプログラムのすべての命令表現を実行する必要はなく、前に保存されたデータを代理データとして使用することにより、特定のコンテキストをシミュレートすることができる。簡単に言えば、パートプログラムの記録又はランタイム実行中、コンテキストの特定に必要なデータがパートプログラムと共に記憶される。次に、保存されたデータを代理データとして利用して、特定の結果をシミュレートし、所望のコンテキストを生成し得る。したがって、特定の時間のかかる動作(例えば、ステージの移動、エッジの検出、フォーカス、照明変更、パターンマッチング等のハードウェア対話が必要な動作)の実行を回避することにより、大きな時間節約を達成し得る。後に代理データとして利用し得るデータの保存については、
図17A及び
図17Bに関してより詳細に後述する。
【0103】
図17A及び
図17Bは、
図15の命令表現のうちのいくつかに対応するパートプログラムのマークアップ言語コード命令の図である。
図17A及び
図17Bは、
図15のパートプログラム表現の命令表現のうちのいくつかに対応するマークアップ言語コード命令の
図1700A及び
図1700Bである。より具体的には、
図17A及び
図17Bは、ラインL3を測定する
図15の命令表現1561及び1561A〜1561Cに対応するXML準拠コードでのパートプログラム命令を示す。一実施形態では、命令表現1561及び1561A〜1561Cが、
図17A及び
図17BのXML準拠コード命令から導出されるアイコン及びラベルを含むことが理解されよう。命令表現1561及び1561A〜1561Cはそれ自体は実行されないが、その代わり、実行される
図17A及び
図17Bの関連付けられたコード命令を指す。
【0104】
図17A及び
図17Bに示されるように、XML準拠コード命令は、ノードID番号1761、1761A、1761B、及び1761Cを含み、一実施形態では、これらノードID番号は、
図15の命令表現1561、1561A、1561B、及び1561Cに対応し得る。XML準拠コード命令は、
図16のユーザインタフェース1600のエリア1630及び1660に表示し得るような、画像位置の特定の位置情報1710と、ボックスツールの特定のボックスツール位置情報1720とも含む。
図17Bに示されるように、データ1730はパートプログラムと共に記憶され、後に、コンテキストをシミュレートする代理データとして利用し得る。より具体的には、
図15の命令表現1561Bが、
図16のボックスツール1670が実行されて、エッジ点集合PT3を特定することを示す場合、ワークピースの部分座標系に対するエッジ点集合PT3の位置が、データ1730としてXML準拠コード命令で記憶される。パートプログラムに変更を行うことができ、これにより、代理データ1730も変更され得る。
【0105】
図18A及び
図18Bは、リアルタイムコンテキスト生成機能を含むマシンビジョンシステムプログラム編集環境を提供するルーチン1800の一実施形態を示す流れ図である。
図18Aに示されるように、ブロック1810において、実行モードが提供され、実行モードは、実行の実行モードを使用して、前に作成されたパートプログラムを実行するように動作可能なように構成される。ブロック1820において、学習モードが提供され、学習モードは、マシンビジョン検査システムの動作を制御すべくユーザ入力を受け取り、被制御動作に対応する関連付けられたパートプログラム命令を記録して、パートプログラムを作成するように動作可能なように構成される。さらに、学習モードは、パートプログラム命令の編集可能パートプログラム表現を含む編集ユーザインタフェースを含むようになされ、パートプログラム表現は命令表現を含む。ブロック1830において、編集部が提供され、編集部は、パートプログラムを編集するように動作可能なように構成される。さらに、編集部は、実行の実行モードとは異なる実行の編集モードに従って、前に記録されたパートプログラム命令を実行するように動作可能な編集実行部を備える。
図18Bに関してより詳細に後述するように、ブロック1830から、ルーチンはポイントAに続く。
【0106】
図18Bに示されるように、ポイントAから、ルーチンはブロック1840に続く。ブロック1840において、学習モードは、各記録パートプログラム命令セットに関連付けられた各代理データを自動的に記録するようにさらに動作可能なように構成される。さらに、少なくともいくつかの各代理データは、関連付けられた各記録パートプログラム命令セットに対応する被制御動作の実際の実行から生じるデータを含む。
【0107】
ブロック1850において、実行の編集モードは、代理実行モードを含むように構成され、編集可能パートプログラム表現で表現されるパートプログラム命令の代理実行モード中、パートプログラム命令の少なくとも1つのセットに対して、各代理データがそのパートプログラム命令セットに関連して前に記録されていた場合、そのパートプログラム命令セットのうちの少なくともいくつかのメンバは実行されず、それにより、それらに関連付けられた被制御動作は実際に実行されない。さらに、各代理データが、代理実行モードの続く動作で、実行されない関連付けられた被制御動作から生じるであろうデータの代替として使用される。
【0108】
図19は、代理実行モードを実行して、パートプログラム命令表現、要素、又はノードにより示されるパートプログラム位置において有効編集コンテキストを提供するルーチン1900の一実施形態を示す流れ図である。ブロック1910において、代理実行モードが有効なコンテキスト位置で開始される。
【0109】
ブロック1920において、ルーチンは現在ノードとして次のノードに続く。判断ブロック1930において、現在ノードが編集コマンドの標的ノードであるか否かが判断される。現在ノードが編集コマンドの標的ノードである場合、ルーチンはブロック1940に続き、ブロック1940において、リアル実行モードが現在ノードで開始され、その後、より詳細に後述するように、ルーチンは判断ブロック1995に続く。しかし、一実施態様では、標的ノードは、命令表現が関連付けられた親ノードであるとみなすことができ、実際の実行モードを親ノードで開始し得、それにより、命令表現に対応する測定の物理的なセットアップが実行されて、命令表現の編集に正確な物理的コンテキストが提供される。
【0110】
判断ブロック1930において、現在ノードが編集コマンドの標的ノードではないと判断される場合、ルーチンは判断ブロック1950に続き、判断ブロック1950において、現在ノードが物理的なシステム変更を無条件に必要とするか否かが判断される。例えば、ノードがステージを移動させて、ワークピースの新しい部分を撮像する場合(例えば、単純な「移動」コマンド等を介して)、いくつかの実施形態では、これは物理的なシステム変更を無条件に必要とし得る。同様に、特定の倍率変更も物理的なシステムの無条件な変更であり、以下同様である。しかし、いくつかの実施形態では、そのような変更が代理データにすでに関連付けられた親ノード内に埋め込まれ、続くノードが再び同様の物理的な変更を必要とする(例えば、移動又は倍率の変更のそれぞれ)場合、最終的に同様の後続命令が優先されるため、無条件に必要とされないことがあることが理解されよう。現在ノードが物理的なシステム変更を無条件に必要とするか否かを解析する様々な方法を、本開示の教示に基づいて当業者により決定し得る。いずれの場合でも、現在ノードが物理的なシステム変更を無条件で必要とする場合、ルーチンはブロック1940に続く。現在ノードが物理的なシステム変更を無条件には必要としない場合、ルーチンは判断ブロック1960に続く。
【0111】
判断ブロック1960において、現在ノードが結果データを提供するか否かが判断される。現在ノードが結果データを提供する場合、より詳細に後述するように、ルーチンは判断ブロック1980に続く。現在ノードが結果データを提供しない場合、ルーチンはブロック1970に続き、ブロック1970において、ノードが代理実行モードで実行され、その後、より詳細に後述するように、ルーチンはブロック1995に続く。
【0112】
判断ブロック1980において、現在ノードに代理データが存在するか否かが判断される。現在ノードに代理データが存在する場合、より詳細に後述するように、ルーチンはブロック1990に続く。現在ノードに代理データが存在しない場合、ルーチンはブロック1940に続く。
【0113】
ブロック1990において、ノードは代理実行モードで実行される。代理実行モードでは、代理データが、現在ノードに対応するパートプログラム命令セットのうちの少なくともいくつかのメンバに関連付けられた制御動作の実行から生じるであろうデータに対する代替として使用され、パートプログラム命令セットのそれらのメンバはスキップされ、関連付けられた制御動作は実際に実行されない。
【0114】
次に、ルーチンは判断ブロック1995に続き、判断ブロック1995において、代理実行モードで実行する別のノードがあるか否かが判断される。代理実行モードで実行する別のノードがある場合、ルーチンはブロック1920に戻り、ない場合、ルーチンは終了する。例えば、標的ノード並びに実行ブロック1930及び1940に達することにより、実行が判断ブロック1995に達した場合、時には、コンテキストはすでに、標的ノードでの編集又は標的ノード内での編集のために確立していることがあり得るため、代理実行モードで実行する別のノードがないであろう。
【0115】
本発明の様々な好ましい例示的な実施形態を図示し説明したが、本発明の趣旨及び範囲から逸脱せずに、様々な変更を実施形態に行い得ることが理解されよう。