JP2009163742A - ソフトウェア・ステップ・プログラムを構成するためのオブジェクト指向方法 - Google Patents

ソフトウェア・ステップ・プログラムを構成するためのオブジェクト指向方法 Download PDF

Info

Publication number
JP2009163742A
JP2009163742A JP2009000359A JP2009000359A JP2009163742A JP 2009163742 A JP2009163742 A JP 2009163742A JP 2009000359 A JP2009000359 A JP 2009000359A JP 2009000359 A JP2009000359 A JP 2009000359A JP 2009163742 A JP2009163742 A JP 2009163742A
Authority
JP
Japan
Prior art keywords
program
target system
steps
step program
executable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009000359A
Other languages
English (en)
Inventor
Serge Limondin
リモンディン サージ
Joe Dziezanowski
ジーザノフスキー ジョー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens Energy and Automation Inc
Original Assignee
Siemens Energy and Automation Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Energy and Automation Inc filed Critical Siemens Energy and Automation Inc
Publication of JP2009163742A publication Critical patent/JP2009163742A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Abstract

【課題】難しいアプリケーションが規定され、実行されることを確実にする一方で、アプリケーションを非常に容易に設定し、動作させるようにする。
【解決手段】実行可能なソフトウェア・ステップ・プログラムのオブジェクト指向の構成方法は、一連の自立したソフトウェア・オブジェクトすなわちステップ200を、実行順序、インプット510のアウトプット234との関連、及びアウトプット・データの変換を規定する階層型構造に構成することによって、プログラムを作成する。
【効果】機械視覚プログラムのようなステップ・プログラムは、様々なCPUアーキテクチャ上で変化させずに動作させることができ、画像処理アクセラレーション・ハードウェアが用意されていれば、それを利用することもできる。
【選択図】図5

Description

本発明は、一般にコンピュータプログラムに関するものであり、より明確には、オブジェクト指向表現及びそういったソフトウェアプログラムのアーキテクチャ、並びに様々な製造及び処理制御アプリケーションのリアルタイム制御を記述し達成するために用いられるプログラムといったコンピュータプログラムの表現及び特性に関する。
コンピュータ(アプリケーション)プログラムの最終目標は、ある形式のデータのオペレーション又は処理を制御することである。より明確に言うと、機械視覚システムアプリケーションプログラムの目標は、画像データから重要な特徴を抽出することであり、そこから、分類、報告及び決定を行うために、画像におけるオブジェクトの記述、解釈又は理解を、機械(コンピュータ)により提供することができる。
機械視覚アプリケーションでは、例えば、一式のオペレーション又はステップが、連続して実行される。典型的な機械視覚プログラムの流れ図が、図1に示されている。一般に、ステップは、ステップ1として、カメラによって捕らえられ、メモリ内に置かれた入力画像の取得で始まる。ステップ2では、画像がセグメントに分割され、そこから特徴が抽出される前に、任意で画像の前処理が行われる。ステップ3では、例えば、オブジェクトの境界線を抽出することにより、一つ以上の明瞭なオブジェクトへの画像のセグメンテーション及び特徴抽出が達成される。特徴は、大きさ、領域、長さ、距離又はパラメータ等、カメラ背景におけるパーツ、特徴(孔等)、及びオブジェクトを記述又は識別するものであれば、いかなるデータであっても良い。
特徴は、通常、画像の上部左隅といった画像におけるある一定の位置に対し、画像における一つの特徴の幾何学的位置を記述する画素単位(画像座標系とも呼ばれる)で表されるか、あるいは、背景におけるカメラの位置が分かっている場合、又はそれを測定することができる(通常、カメラを較正すると言う)場合には、"mm"やインチのような物理的単位(カメラ座標系とも呼ばれる)で表される。
これらの特徴は、通常、ステップ4で公差と照合されるか、あるいは様々なカテゴリーに分類され、その後、ステップ5で判定が行われ、ステップ6で合格/不合格の状況や結果が得られる。ステップ7では、処理アプリケーションを詳細に述べた報告書を生成することも可能である。更に、ステップ8では、特定の特徴に対する処理の実行の間、公差照合を促進したり、公称公差値を与えたりするために、外部制御入力が用いられる。
ソフトウェア・ステップ・プログラムを構成するためのオブジェクト指向方法は、ここに記載された本発明の主題であると共に、以下のような多くの利点を有する。
1)簡単な視覚アプリケーションをセットアップしたり、トレーンしたり、実行することを非常に容易にする一方で、複雑なアプリケーションも容易に構成可能にすることを確実にする。
2)ドロップイン機能を言語に依存しないソフトウェア・コンポーネントの形状で与えることにより、プログラムを拡張する方法を提供する。新たな機械視覚オペレーションを随意にシステムに追加することが可能であると同時に、それらのために新たなユーザ・インターフェイスを追加することも可能である。実施可能なオペレーションのタイプや、これらのコンピュータプログラムが戻すことのできるデータに、任意の制限はない。
3)レシピ・データベースからプログラムを構築すること、又は使用が容易なポイント・アンド・クリックグラフィカルユーザインターフェースを直接使用することをサポートする。
4)局所的、又はネットワーク上のいずれかにおける記述を容易にし、又自由形式の表現をサポートするために、名前によるステップ・プログラム中のデータのアクセスを可能にする。
5)例えば、オブジェクトがあまりに大きくて一つのカメラ画像に納まり切らない時、異なるカメラで捕らえた特徴間の距離を容易に算出することができるように、ステップ・プログラムにおける結果データを異なる座標系で表すための機構を提供する。
6)上記のような名前の付いたデータを、局所的に、あるいはインターネット又はインターネットネットワーク上のリモートホストマシンからデータにアクセスするための、ユニフォーム・リソース・ロケータ(URL)アドレスとして知られるインターネットアドレッシング体系と互換性のある形式でコード化することができる。
7)プログラムがロードされているプラットフォーム(コンピュータ又はシステム)に本来備わっているGUI(グラフィカル・ユーザ・インターフェース)ライブラリを用いて、パラメータのトレーニング及びセッティングを可能にするユーザ・インターフェース・コンポーネントを作り出すための機械視覚プログラム用機構を提供する。
8)ホスト上で、同一のホストコンピュータの周辺拡張バスに差し込まれた、又はセットアップ及びトレーニングホストとして同一ネットワーク上に存在する異なるホストコンピュータの周辺拡張バスに差し込まれた視覚プロセッサを用いて、機械視覚プログラムのトレーニング及びトライアウト(即ち、試行)を行うことができる。
9)ホストシステムネットワークに接続されたスタンドアロン視覚プロセッサを用いて、ホストコンピュータ上での機械視覚プログラムのトレーニング及びトライアウトができる。
10)異なるCPUアーキテクチャ上でも機械視覚コンピュータプログラムを変更することなく実行させたり、利用可能な場合には、画像処理加速ハードウェアを利用する。より明確には、アーキテクチャが、次の物を含めて、(援用される、1997年11月21日に出願された、共通の所有者による、共に係属中の米国仮特許出願番号60/066,339に開示されたような実行時間構成に対応する)様々な処理モデルをサポートする:
a)ホストコンピュータの周辺拡張バスに差し込まれた視覚プロセッサ・ボード(ターゲット)上でのプログラムの実行。
b)画像取得及び加速された画像処理のための拡張バスに差し込まれた視覚ボードを用いたホスト上でのプログラムの実行。
c)画像取得(フレームグラバ)のための視覚ボードを用いたホスト上でのプログラムの実行。
d)生成された各出力又は各結果に対して、この出力が表された単位を規定する座標系が添えられる。
e)ネットワーク上でホストに接続されたスタンドアロン視覚プロセッサ・システム(ターゲット)上でのプログラムの実行。
10)ローカルホスト又はリモートホストからの診断及びデバッギングという目的で、視覚プロセッサ・ボード又は視覚プロセッサターゲット上で実行されると直ちに、機械視覚プログラムがモニターされることもできる。
本発明は、各ステップで、またステップ間で、実行順序及び入力と出力とのつながりを提供する、階層構造に自己組織化された一組のソフトウェア・オブジェクト又はステップを構成することによって、機械視覚プログラムを作成する、ソフトウェア・ステップ・プログラムを構成するためのオブジェクト指向方法について説明する。
また、ステップは、類似のオペレーションを行うステップ間の共有性を利用するために、オブジェクト指向ソフトウェア階層にも組織化されている。
ステップ・プログラムは、豊富な情報をコード化する。例えば、ステップ・プログラムは:
a)機械視覚アプリケーションを共に構成するオペレーションのリストを含む。
b)各ステップ(オペレーション)毎に、パラメータの設定及びそのステップ(オペレーション)を首尾よく実行するために必要とされるセッティングをコード化する。
c)各ステップ(オペレーション)毎に、そのステップ(オペレーション)が受け入れる入力と、生成される出力又は結果を規定する。
d)結果を実物理的単位で表すことができるように、生成される出力に対し、座標系情報を添える。
e)インチやミリメートルのような物理的リアルワールド単位への座標系の較正を許容すると共に、ある座標系から別の座標系への結果の変換を許容する情報を含む。
f)座標系間の物理的関係を、パートステップツリーと呼ばれる階層木構造に組織化することによって、それらの物理的関係を規定する。その結果、カメラ座標系とワールド座標系(通常、全装置がボルトで固定されたテーブル又は固定具)との間に、ステージパートステップ(即ち、カメラが搭載された動作装置)を挿入することにより、例えば、移動カメラの記述が許容される。
g)システムを首尾よく動作させることができる前に、システムのオペレータにより、特定のオペレーションがセットアップ又はトレーンされる必要があるか否かを検知するための情報を含む。
h)各オペレーション毎に、ステップ・プログラムがロードされたGUI(グラフィカル・ユーザ・インターフェース)環境に関わらず、ステップ・プログラムをセットアップしたりトレーンしたりする際にオペレータを補佐する、必要なユーザインターフェースコンポーネントを呼び出すための情報を含む。
i)各オペレーション毎に、ホストPC上又は視覚ターゲットボード上で直接動作する、又、動的にハードウェアを検知したり、利用可能な際にはハードウェア加速を利用する、実行可能なコンピュータプログラムを構成することができる。
j)入力、出力、セッティング、パラメータと同様に、各ステップ・オペレーションに名前を付け、その結果、式、スプレッドシート、又はスクリプトから、ステップ・プログラムにおける何らかの結果に名前でアクセスするための簡単な機構を提供する。
視覚オペレーションの順序を記述することに加えて、開示されたステッププログラムアーキテクチャは、しばしば視覚処理と連係して実行されなければならない様々な他のセル制御オペレーションについて記述するために用いられることも可能である。そのようなプログラムは、I/O、通信、及び動作制御アプリケーションを含むが、これらに限定されるわけではない。ステッププログラムアーキテクチャは、更に、視覚処理を全く含んでいないセル制御プログラムを独占的に記述するために用いられることもできる。
本発明のこれら及び他の特徴並びに利点は、次の図面を参照に、以下の詳細な説明を読むことによって、更に詳しく理解されるであろう:
機械視覚プログラムを構成する典型的なソフトウェア・コンポーネントを示す図である。 ホストグラフィカル・ユーザ・インターフェースウィンド内のステップ・プログラムのサンプル・ユーザ・インターフェース・ビューを示す図である。 図2のステップ・プログラムがどのように実行され、どのような順序でステップが実行されるかを示す図である この実行モデルをサポートする内部ステップ・オブジェクト表現を示す図である。 一つのステップが実行された時、そのステップにおけるデータの流れを詳細に示す図である。 ステップ実行及びデータフローモデルの両方をサポートするオブジェクト指向継承階層を示す図である。 最適化のためのステップ実行遅延束縛をサポートするオブジェクト指向継承階層を示す図である。 機械視覚プログラム等のアプリケーションプログラムを作成し、セットアップし、試行する目的で、本発明のオブジェクト指向方法によってサポートされたホスト及びターゲットシステムネットワーク接続性を示す概略ブロック図である。 ステップ・プログラムにより生成された出力結果と、別々のカメラ画像における特徴間の距離を算出する二つのカメラサンプルステッププログラムに関する座標系との間の関係を示す図である。
本発明の要旨である機械視覚ステップ・プログラムのアーキテクチャは、階層型ツリー構造に構築されたステップと呼ばれる一式のソフトウェア・オブジェクトにより実行されるのが好ましい。この表示により、クライアント・コードがソフトウェア・オブジェクト及びソフトウェア・オブジェクトの構成を統一的に処理することができる。ステップ・プログラムのツリー構造表示の一例が図2に示されている。
ステップ・プログラム・オブジェクトの構成
例示のために本文中で説明されているように、ステップとはステップ・プログラムを形成するために組み合わされたソフトウェア・オブジェクト(すなわちC++クラス)である。ステップは、ツリー状あるいは階層状に構成されており、ステップがトレーニング、前処理、座標変換及び後処理作業を行うために(子ステップと呼ばれる)他のステップを含むことができる。ステップは、データ・オブジェクトを利用して、互いにパラメータ及び結果をやり取りする。
データ・オブジェクトは、視覚アプリケーションにおいて検出される全ての結果に対して標準型を与え、一つのステップの結果(アウトプット)が他のステップへのインプットとして使用されるのを可能にするソフトウェア・オブジェクトである。ステップ及びデータ・オブジェクト(データ)は、ツリー・コントロール、リスト・コントロール、テキスト・コントロール及び/あるいは画像コントロールのような、一般的コンポーネント型エディタの一つ以上等の、当業界において公知の標準的なGUIコンポーネント・オブジェクト・エディタを用いることにより、グラフィック的に編集することができる。
エディタは、ポイント−アンド−クリック・ユーザ・インターフェイスを用いてステップ及びデータを変更するための、全ての必要なビュー及びユーザ・インターフェイス・コントロールを作成することができる、ソフトウェア・オブジェクトである。図2は、ステップ・プログラム全体をツリー・コントロール・ウィンドウにグラフィック的に表示するために作成された、エディタ・オブジェクトを示している。
更に、ステップ・プログラムにおける各ステップ及びデータは、ユーザがパラメータ及び設定を変更したり、ステップあるいはデータを調整したりできるエディタ・オブジェクトを、そのステップ及びデータが動的に作成することを可能にする、特定の識別子あるいはGUID(Globally Unique IDentifier)を含んでいる。GUIDは、ステップあるいはデータ・オブジェクト自体の内部に保存されているとともに、マイクロソフト・ウィンドウズ・オペレーティング・システムにおいて時に"レジストリ"と称される、ホスト上の特定のデータベース内に保存される。
ホストは、GUIDを動的に与えられたオブジェクトを作成するために、標準オペレーティング・システム APIs(application programmer interfaces)を提供する。これは、本質的に、あらゆるランタイム・ステップあるいはデータが、ステップ・パラメータ及びインプットを操作するためのユーザ・インターフェイスを提供するエディタ・オブジェクトへのポインタを含むという二重オブジェクト階層を創り出す。次に、ホスト上のこれらのエディタ・オブジェクトが、好適な実施例においてウィンドウズ95あるいはNTオペレーティング・システム用のActiveXコントロールとして実施されているソフトウェア・コンポーネントを作成し、ステップ・パラメータを編集・トレーニングするための見慣れたビュー・ウィンドウ及び/またはダイアログを提供する。
ターゲット上では、これらの識別子はステップ・プログラムがホストによって制御されている間無視されているか、あるいは機械視覚ステップ・プログラムがスタンドアロン・コンフィギュレーション(次のセクションに記載)で実行されている間、ステップインプットを操作するためのランタイム・ユーザ・インターフェイス・エディタを創り出すために使用されているかのいずれかである。
あるステップは、ランタイム処理及びセットアップあるいは調整を処理するための他のステップを作成する。これらのステップは、セットアップ時にオペレータのインテリジェント・トレーニングを補佐することができる点において、特に有用である。インテリジェント・トレーニングとは、ステップが、ランタイム中に検知する必要がある特徴を代表する1つのサンプル・イメージを提示され、ランタイム設定及びパラメータの最適組み合わせを自己決定するためのトレーニング・オペレーションを実行するオペレーションである。
実行命令は、まずツリーにおけるステップのポジション、すなわちそれらの名前を左から右に及び上から下に読むことにより列挙するであろう順番により、ステップ・プログラム100によってコード化される。これは、全てのステップが探索されるまでに各ポジションが一度は探索されたことを確認する、ツリーのウォーキングあるいは全探索と称される。
実行命令は、ツリーの各ステップに付された特定の属性値によって更にコード化され、これにより前記のルールを修正することができる。例えば、ステップ・プログラム100のステップ112は、ステップ110の前にステップ112が実行されるようにする、従って前記のツリー探索ルールにより規定された実行順序を変更させるような属性値を有していてもよい。これは、前処理ステップあるいは更に厳密には前処理属性値がONになっているステップと呼ばれる。以下で説明するように、属性値は、実行順序を変更するものに限定される訳ではない。
図2において、各アイコン画像は、本発明によるステップ・プログラム100の個々のステップ・オペレーションを表している。インデントされたステップは、それらのツリー構造に加えて次のような属性値を有している。
・前処理ステップ、すなわちその親ステップより先に実行されるステップ。
(Findpin1、ステップ116が前処理ステップの一例である)
・トレーニング・ステップ、すなわちオペレーションのパラメータ設定時にオペレータを補佐するステップ。
(Find Setup、ステップ118がトレーニング・ステップの一例である)
・後処理ステップ、すなわちその親ステップの後に実行されるステップ。
(Warp Step、ステップ122が後処理ステップの一例である)
従って、実行順序は、ツリーにおけるステップのポジションと設定及び選択された前/後処理属性値の両方によるステップ・プログラムによって、コード化されている。
コンテナ・ステップと呼ばれる特別のステップは、子ステップをグループ化し、その実行順序を設定する。これらのコンテナ・ステップは、その子ステップに共通のインプットを与えてもよい。例えば、SnapShotステップ(ステップ110)は、それに含まれる子ステップの全て(ステップ112−128)が処理するインプット画像を規定しているが、子ステップの順序が実行の順位を指示している。
図3は、図2のステップ・プログラム100のステップ・プログラム実行順序を示している。ステップ・プログラムの実行は、画像の捕捉(ステップ112)に始まる。画像の捕捉に続いて、プログラムは階層における次のステップ、すなわち2PinFindステップ(ステップ114)に移動する。しかし、2PinFindステップが3つの格納子ステップ、すなわちFindPin1、FindPin2及びWarp Step(それぞれステップ116、120及び122)を含んでいるため、プログラムは、その子ステップを正しい順序で実行するために、子ステップの前/後処理属性値を検知しなければならない。
本例では、FindPin1及びFindPin2(それぞれステップ116及び120)が前処理ステップのタグを付されているので、それらの親ステップ、すなわち2PinFindステップ(ステップ114)より先に実行される。(FindPin1ステップ(ステップ116)が実行される際、その格納子ステップ、すなわちFindSetupステップ(ステップ118)は、付されているSETUPという属性値がそのステップをTrainのみのステップでありランタイム・ステップではないと表示するため、完全にスキップされることに注目。)
実行順序における次のステップは、親ステップ(ステップ114)すなわち2PinFindステップである。親ステップ(ステップ114)の実行後、プログラムは、本例ではWarp Step(ステップ122)及びその格納ステップ、すなわちDefectFinder 及びOCV Fontless Tools ステップ(それぞれステップ124及び126)を含む格納された後処理ステップの全てを実行する。最後に、ステップ・プログラムはI/O Outputステップ(ステップ128)を実行し、ステップ・プログラムが完了される。
図2に示されたステップ・プログラムの例から、実行順序が指定されるのに加えて、子ステップのインプットが、自動的にその親コンテナのアウトプットに関連付けられていることが分る。
3つの基本ソフトウェア・オブジェクトは、この内部データ及び実行フローをコード化する。図4は、これらのソフトウェア・オブジェクトの詳細な構造を示している。これらオブジェクトは、ステップ・オブジェクトを含むが、それは200及び300のような親オブジェクトあるいは子オブジェクトであってもよい。追加的な種類のオブジェクトは、参照オブジェクト 400のような参照オブジェクト、及びデータ・オブジェクト500のようなデータ・オブジェクトである。これらのオブジェクトは、図6に示されるように、他のステップがそこから導き出される継承オブジェクト指向階層に構成されている。
階層型構造を更に規定するために、図2に示されたように、同じインデントレベルにあるステップ(例えば、ステップ112及び114あるいはステップ124及び126)が、マップと呼ばれるデータ構造内に物理的に保存される。このマップ保存は、これらの子ステップの全てを含む親ステップ・オブジェクト、すなわち子ステップがそこから直接インデントしているステップの一部分である。マップは、一連の任意オブジェクトを一緒に保存し、リンクさせるために使用される、標準C++ライブラリ・コンテナ・オブジェクトである。更に、リストの各オブジェクトは、属性値によるタグを個々に付すことができる。本発明において、属性値は、ステップの実行順序(すなわち前処理及び後処理)を細かく規定するとともに、特別な種類のステップ(SETUPステップ及びPARTステップ)を表示するために用いられる。
1つのプログラムのどのステップも、図4の#children list(以下子リストという) 210と呼ばれる格納されたステップのリストを含んでいる。子リスト中の各工程は、その親ステップに関して実行されるべき順序を制御するために、PRE(前処理)(例えばステップ211及び212)、SETUP(Train)(例えばステップ213)、PART(調整、座標変換)(例えばステップ215)、あるいはPOST(後処理)(例えばステップ214)のうちいずれかのタグを付される。データリスト230は、ステップインプット(IN) 231及び232、アウトプット(OUT) 234、及びリソース(RES) 233のリストを含んでいる。リソース(あるいはリソース・データ)は、そのステップがオペレーションを実行するために設定する必要のあるパラメータあるいは条件である。
更に、親オブジェクトは、オブジェクト・データを使用するか、もしくはオブジェクト値が変化する際に通知されるべき一連のオブジェクトを列挙した、_reflists 220を含んでいる。このリストは通常、システムのオペレータに、ステップあるいはデータのスクリーン上のグラフィック/ビューを提供するエディタ・オブジェクトを含む。前記図2は、そうしたエディタ・オブジェクトの一例である。
エディタは、各ステップあるいはデータ内に保存されている、現ステップのパラメータ及び条件を変更するためのユーザ・インターフェイス・コントロールを提供することができるオブジェクトのタイプを規定する、GUID(Globally Unique Identifier)240を用いて作成される。
ステップ実行中に、(図5)データ 1、2及び3(それぞれ512、514及び516)等の、INデータ 510としてタグを付されたデータの全てが、そのステップによって読み込まれ、RESデータ1、2及び3(235、237及び239)等の内部リソース・データに基づいて、OUTデータ1、2及び3(236、238および242)等のアウトプット・データが、ステップの実行しているオペレーションに従って演算される。
各アウトプット・データは、Partステップと呼ばれる特定のステップ・オブジェクトを指すポインタを有する。Partステップは、アウトプット・データ用のユニットに関する情報を含んでいる。1つのPartステップは、"部分ツリー"と呼ばれる個々のオブジェクト・ツリーの一部であり、ステップ・プログラムが作成される際に構築される。図2のSnapShotステップ 110のようなオブジェクトの構成における特定のステップは、ステッププログラム・ツリー内に挿入される際に、自身のアウトプット・データに座標系あるいは単位を提供するための追加的なステップを作成する。
SnapShotステップの場合、アウトプット画像は、Snap Partステップと呼ばれる特定のPartステップと連携している。このSnap Partステップは、SnapShotステップの子リストに保存され、座標系タイプのオブジェクトであることを示す属性値(PART)を付される。これら特定のオブジェクトは、ランタイムに実行されるのではなく、固定カメラ用の堅固なスタンド上、あるいは移動カメラ用の移動台上にカメラが一旦物理的に配置されると、その調整法を補助するものである。
図2に示すステップ・プログラムに関して、部分ツリーは以下のように見える。
+WorldPart<<常に存在し、全てがそこから測定されるWorld座標系
+SnapPart<<各カメラは、World内でのポジションを有している。
+WarpPart<<何らかの視覚手段が回転し、画像を数学的に動かし、これらもまた座標系を創り出す。
前記の画像において、WorldPartは、何らかの周知の物理的位置(例えば、装置が置かれている台あるいは部屋)に関して、システム全体の座標系を表す。これは、あるステップ・プログラムがディスクからロードされるか、あるいはエディタ・オブジェクトを用いて作成されるときには必ず作成されるデフォルトの座標系である。
SnapPartは、図2のSnapShotステップ 110により作成された領域におけるカメラの位置を表す。
WarpPartは、図2のWarpStep(ステップ122)により作成された画像をワープさせる処理を経て、画像座標がどのように変換されるかを表す。
OUTデータ 1、2及び3(236、238及び242)等の各アウトプット・データは、そのアウトプットにより使用される単位をコード化する座標系(オブジェクト)へのポインタを格納する、部分ステップ(すなわち図4の501)を含んでいる。例えば2つの数x及びyによりコード化される画像の特徴(穴など)の位置等のアウトプット結果について、座標系は、xが画像の水平軸に沿ったピクセル位置を表し、yが画像の垂直軸に沿ったその特徴のピクセル位置を表している2つの軸から成り、ピクセル位置0、0は画像の左上の角である。
その座標系オブジェクトは、それ自身、図4の501で示されるようにアクティブな属性値"PART"を有するステップである。これらのPartステップは、結果アウトプット・データの1つとして画像を生成するステップが作成される度に、ステップ・プログラムに挿入される。
例えば、個々のカメラ画像における特徴(本例では"穴")の間の物理的距離を計算するステップ・プログラムであり、2つのSnapShotステップ 702及び704から成り、そのそれぞれがカメラから画像を取り込むための1つの前処理ステップ AcquireStep 706と、所望の画像属性値、例えば(穴)(各カメラ画像座標系における"穴"の中心のx及びy座標)のそれぞれの位置を決定するための1つの後処理ステップ FindStep 708を含んでいる、図9のステップ・プログラム 700について、各SnapShotステップ 704がSnapShotStep PartStep(すなわち属性値"PART"が付されたステップ)を作成し、それを図4の215で示すように自身の子リスト _childlistに挿入する。SnapPartStepは、特定のSnapShotStepのアウトプット画像データに添付された座標系の原点0,0及び軸(水平及び垂直)の位置をコード化する。また、その画像から演算された特徴が伝達されるべき測定単位もコード化する。
一般に、カメラ画像から引き出された全ての特徴及び結果は、カメラがインチあるいはミリメートルの単位に調整されるまで、ピクセル値で伝達される。同様に、SnapShotStepのアウトプット画像データが、図4のデータリストでアウトプットデータ・アイテム 500dとして示されたSnapPatrStepへのポインタを含んでいる。
カメラの調整とは、一旦カメラの位置が測定されるか、ワールド内で事前に分れば(すなわち、図9のテーブル座標系 WorldPart 705におけるカメラ 1(710)及びカメラ 2(712)の位置)、所与のカメラ画像の位置を、それによって場面("ワールド")内での位置に変換することができる過程のことである。図9のステップ・プログラム 700に関して、FindStep 708は、求める画像における各"穴"あるいは他の特性の位置(x,y)を、前述のようにピクセル座標に伝達する。
次に、2つの穴の物理的距離が演算可能となる前に、SnapshotStep アウトプット画像データの各SnapShot702/704 PartStepによって、x,yの位置が領域あるいは場面X,Y座標に変換される。これら2つの座標系は、図9においてSnapPartCam1(X1,Y1) 710及びSnapPartCam2(X2,Y2) 712で示されている。
Snap PartStepは、ランタイムに実行される際、図9における各穴のx,y位置のような特徴をピクセル座標からカメラ座標に変換し、これによって例えば2つの穴の距離の測定が、演算可能になる。実際、図9のステップ・プログラムのSnapPartStepステップは、各穴のx,y位置を全カメラに共通の座標系(すなわち図9のWorldPart座標系 705)に変換する。
WorldPartStep 705(図9)は、2つのカメラが据え付けられている物理的台あるいは物体のような何らかの周知の物理的位置に関する、システム全体の座標系を表すもので、あるステップ・プログラムがホストコンピュータ上、あるいは視覚処理装置上のシステムにロードされる度に作成される。図9のステップ・プログラムにおける各穴あるいは他の画像特性の位置が、各SnapPartStep によって共通座標系(the WorldPart)に変換されると、Pt−Pt Distanceステップ 714が、その穴あるいは他の画像特性間のWorldPart単位における距離(通常インチあるいはミリメートル)を演算する。
全データ・オブジェクトの_refto領域(例えば図6の622)は、あるステップのインプットと他のステップのアウトプットとの関連を処理している。この領域は、ステップ・プログラムの実行中、そのステップにより使用されるべき値を含む同種のデータを常に指している。
図6は、基礎オブジェクトが構成される過程を説明している。全ての基本オブジェクトは子オブジェクトを含むことが可能であり、このことは複合オブジェクト 600により示されている。ステップは、インプットを受け取り、アウトプット結果を演算するためのデータ・オブジェクト 620も含む複合オブジェクトである。各データ・オブジェクト 620は、1つ以上の参照部分 622(_refto)を含み、それによって、ステップが自らのアウトプットを介して互いに関連付けられることができる。この例におけるアウトプット・データは、その_reftoポインタがそれ自身を示しているデータである。エディタ・オブジェクト 630は、ホスト・ディスプレー・オブジェクト 640へのインプットとしての役割を果たす。
この構造の直接的利点は、関連付けられたデータすなわちインプットあるいはリソース型のデータが、実行中に使用されるものとは別にそれ自身の値を保持することもできる点である。これは、通常名目値を保存するために用いられる。
ステップ・プログラムにおける全てのオブジェクトに呼称が付けられているため、そのプログラムにおける結果データのポジションあるいはアドレスを一義的に表す文字列を構成することができる。これによって、スクリプト言語あるいは表計算セル用の式が、ステップ・プログラムの実行後にステップデータを直接操作する複雑な式を構築することが可能になる。例えば、図2において、FindPin1ステップ(ステップ116)は、画像中のパターンを捜し出し、その位置を2つの座標[x,y]を有する点として返す。このアウトプットされた点が、FindPin1ステップ内で"ベストマッチ"と呼ばれる。その点のx座標をスクリプトから操作するために、オペレータは単に"FindPin1.BestPoint.x"と打ち込めばよい。("FindPin1.BestMatch"が、ステップ・プログラムにおけるこの点を一義的に識別することに注目。)一義的であることが保証されるフル・アドレスは、
"VisionBoard0.InspectionStep.
SnapShotStep.2PinFindStep.
FindStep1.BestPoint.x"である。
この座標がゼロより大きいかゼロであるかを確かめる式は、
"FindPin1.BestPoint.x>=0"である。
この例及びホスト・システムが視覚プロセッサとローカル・ネットワーク(図8Aに示すようなホスト・システムに搭載された視覚プロセッサ)あるいは図8B及び8Cに示すような有形のネットワークにより接続され、また引用により本文中に含まれている、名称が「埋め込みプロセッサ及びホストプロセッサ用の、その間における見かけ上のネットワークインターフェイス」である同時係属中の米国特許出願No.09/026,052によっても裏付けられているという事実により、実行中の機械視覚ステップ・プログラムにより演算された結果をホスト上に表示するために、視覚プロセッサの位置をデータ・アドレス内にコード化することが可能である。
この説明は、視覚プロセッサ・ボード及び/あるいはホスト・システムがウェブ・サーバとして設定され、従ってローカル・ホスト・システム(図8A)上、あるいはリモート・ホスト・システム(図8B及び8C)上で動作するウェブ・ブラウザからの通信に応答することができるという事実に基づいている。
フル・アドレスは、ホストにより制御される視覚プロセッサ・ボードあるいは視覚プロセッサ・システムの、Uniform Resource LocatorアドレスすなわちURLと連結されている。これは、視覚プロセッサ上で実行中の機械視覚ステップ・プログラムにより演算されているデータ値を、ホスト上のウェブ・ページ内に表示するために利用することができる。上記の式について、URLアドレスは、
http://VisionProcessorNetworkName/exec/ShowValue?InspectionStep.
SnapShotStep.2PinFindStep.FindStep1.BestPoint.xであり、ここにおいて
a)http://VisionProcessorNetworkName/は、ホストが接続されている視覚プロセッサ・ボードあるいはシステムを識別する。
b)exec/ShowValueは、機械視覚ステップ・プログラムにより演算されたデータの値を得るために呼び出すべき視覚プロセッサ・ボードあるいはシステム上のプログラムを特定する。InspectionStep....BestPoint.xは、前述のようにアクセスする必要があるステップ・プログラムにおけるデータのアドレスである。
ステップ・プログラムの高移植性の実行
ステップ・プログラムは、ハードウェアとすることもコード化されたソフトウェアとすることもでき、様々なCPUアーキテクチャ上で実行することが可能で、ランタイムに画像処理オペレーション用のハードウェア・アクセラレーションを利用することもできる。これは、ステップ・プログラムがその上で動作されるべきハードウェア・プラットフォームへの、ステップ・プログラムの遅延束縛によって為される。
C++のようなオブジェクト指向言語において、メモリ内に割り当てられた各オブジェクトも初期化する必要がある。コンストラクタと呼ばれるオブジェクトの特別な関数の呼び出しが、オブジェクトを初期化する。オブジェクトの関数あるいは方法を実行するステップコードは、そのCPU上で動作するアプリケーション・コードの一部であって、ディスクに保存されたステップ・プログラムの一部ではないため、オブジェクトあるいはステップ関数を、そのオブジェクトやステップがどこにロードされるかによって異なったように実行することが可能である。
図7は、ランタイムに効率的にステップ・プログラムを実行するために用いられる手法を示している。
1.ステップ・プログラムの基礎は、Target オブジェクトと呼ばれる特別なコンテナ・オブジェクトであり、それは、作成される際すなわちステップ・プログラムがメモリにロードされてその作成法が呼び出される際に、ハードウェア・リソースを捜してコンピュータをスキャンする。具体的には、画像取り込み装置及びパイプライン・画像アクセラレーション・ハードウェア(引用により本文中に含まれている、共有された同時係属中の米国特許出願No.08/953,772に記載されたアキュイティ・ヴィジョン・プロセッサ・ボード上に見受けられるような)が検出される。更に、カメラから、デジタル化された画像を、ハードウェアにより効率的に分析することができる場所において受け取るために、メモリが割り当てられる。
ランタイムにおいて、画像処理オペレーションを行う図7のステップ 650は、画像を分析するために、エージェント 652a−652cと呼ばれる低レベル・ソフトウェア・オブジェクトを作成する。これらのソフトウェア・エージェントは、遅延束縛法と呼ばれる手法を用いて作成される。遅延束縛は、処理オペレーション(すなわち画像処理ステップ)を実行するためのソフトウェア・オブジェクトを、そのステップ自身が作成する処理法である。遅延束縛は、多数の考えられ得る実行可能なコードの組み合わせから、現在ある有形のCPU、オペレーティング・システム、メモリの種類等の一定の特徴に基づき、性能を最大限にするために、実行可能なコードが選択/生成される処理法である。本発明において、遅延束縛は、画像メモリ内における画像の物理的位置に基づいて画像処理装置の性能を最適化するために用いられている。
その結果、本ステップ・プログラムは、ユーザが気付くことなく多数のランタイム・モデルをサポートしているのである。例えば、
・ 本ステップ・プログラムは、どちらも引用により本文中に含まれている同時係属中の仮特許出願No.60/066、339及び先に出願された「フレキシブル処理ハードウェア・アーキテクチャ」という名称の米国特許出願No.09/030、411(1998年2月25日出願)に記載されたデジタイザのようなデジタイザ・ハードウェアをホストCPU PCIバスに直接接続されたフレーム取り込みボードとして用いて、ホストCPU上で実行することができる。
・ 本ステップ・プログラムは、ホストCPU上で実行することができる。しかし、画像処理オペレーションは、引用により本文中に含まれている同時係属中の共有の米国特許出願No.08/953,772に記載されているような視覚プロセッサを用いることにより高速化することが可能である。
・ 本ステップ・プログラムは、同時係属中の共有の米国特許出願No.09/030,411に記載されているような、ホストCPU PCIバス内に埋め込まれたターゲットCPUボード上で実行することができる。
・ 本ステップ・プログラムは、前記の米国特許出願No.09/030,411に記載されているような、ネットワークを介してホストCPUに接続されているか、あるいは全く接続されていない独立型ターゲットCPUボード上で実行することができる。
熟練した当業者による改造及び代替は、以下の請求の範囲による以外は限定されるべきでない、本発明の範囲に含まれると考えられる。

Claims (27)

  1. 実行可能なステップ・プログラムをステップ・プログラム開発システム上で開発するオブジェクト指向の方法であって、前記開発されるステップ・プログラムは、複数の予想されるターゲット・システムのうちの1つにおいて実行可能であり、
    該方法は、
    (a)利用可能なステップ・プログラムのステップのリストから、少なくとも1つのステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、該選択された少なくとも1つのステップ・プログラムのステップのそれぞれは、少なくとも1つのステップ・オブジェクトに関連しており、該少なくとも1つのステップ・オブジェクトのそれぞれは、ターゲット・システム上で前記関連ステップを実行するための少なくとも1つのステップ・エージェントを選択する工程と、
    (b)前記ステップ・プログラムが動作されるべき少なくとも1つのターゲット・システムを供給する工程であって、
    該ターゲット・システムは、複数の固有のステップ・エージェントを含んでおり該ターゲット・システム上で動作が可能な、該ターゲット・システムに固有のステップ・エンジンを備え、該ターゲット・システムに固有のステップ・エンジンは、前記少なくとも1つの選択されたステップ・プログラムのステップに関連する前記少なくとも1つのステップ・オブジェクトに応答して、各該少なくとも1つの選択されたステップ・プログラムのステップに関連する該少なくとも1つのステップ・オブジェクトに対して、少なくとも1つの該ターゲット・システム上で動作が可能なステップ・エージェントを選択し、前記ステップ・プログラムのステップを動作させるべきターゲット・システム上で前記関連ステップを実行し、該ステップ・プログラムを該ターゲット・システム上で該ターゲット・システムに固有のステップ・エンジンを用いて動作させる工程、
    と、を含むことを特徴とする、方法。
  2. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムが前記ステップ・プログラム開発システムであることを特徴とする、方法。
  3. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムがスタンドアロン・システムであることを特徴とする、方法。
  4. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムが前記ステップ・プログラム開発システムに接続されていることを特徴とする、方法。
  5. 請求項4に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記接続がネットワークを介していることを特徴とする、方法。
  6. 請求項4に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記接続がコンピュータ・バスを介していることを特徴とする、方法。
  7. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムに固有のエージェントが、該ターゲット・システム上で関連ステップを最も速く動作させるために最適化されていることを特徴とする、方法。
  8. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、
    前記ターゲット・システムはユニフォーム・リソース・ロケータ(URL)アドレスにより識別可能であり、前記ステップ・プログラムのステップを生成する前記工程は、該ターゲット・システム及び該ターゲット・システム上で実行すべき各ステップの名称を、該ターゲット・システムのURLを利用して識別することを含み、更に該ターゲット・システム上で実行すべき該各ステップに関する情報は、ワールド・ワイド・ウェブ・ブラウザを用いて入手することができることを特徴とする、方法。
  9. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、
    前記生成されたステップ・プログラムは、前記ターゲット・システム上で実行される前に、前記ステップ・プログラム開発システム上で動作及び編集されることを特徴とする、方法。
  10. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、更に、
    (a)前記開発されるステップ・プログラムの少なくとも1つの選択されたステップに名称を付ける工程と、
    (b)複数の前記選択されたステップ・プログラムのステップを、階層型ツリー構造に構成する工程と、を含むことを特徴とする、方法。
  11. 請求項1に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、更に、
    a)前記開発されるステップ・プログラムの前記少なくとも1つの選択されたステップに関連する、前記関連ステップ・オブジェクトに名称を付ける工程と、
    b)複数の前記選択されたステップ・プログラムのステップ・オブジェクトを、階層型ツリー構造に構成する工程と、を含むことを特徴とする、方法。
  12. 請求項11に記載の方法において、前記ステップ・プログラム・オブジェクトを構成する前記工程は、更に、関連するオペレーションを親ステップ及び格納された子ステップを含む関連ステップとして実行する分類作業工程を含むことを特徴とする、方法。
  13. 請求項12に記載の方法において、前記ステップ・プログラム・オブジェクトは、前記ステップ・プログラムを形成するために結合される、インプット・データ、アウトプット・データ及びリソース・データを含むデータを含むステップと、
    全てのビュー及びユーザ・インターフェイス制御手段を作成するエディタ・オブジェクトと、を含むことを特徴とする、方法。
  14. 請求項13に記載の方法において、前記エディタ・オブジェクトは、前記実行可能なステップ・プログラムがロードされ動作するコンピュータ上で動作するオペレーティング・システムに備わっている、グラフィカル・ユーザ・インターフェースを用いて、全てのビュー及びユーザ・インターフェイス制御手段を作成することを特徴とする、方法。
  15. 請求項13に記載の方法において、更に、
    全世界レベルで固有の識別子(GUID)を各ステップに割り当てる工程と、
    前記実行可能なステップ・プログラムを動作させるべきターゲット・システム上のオペレーティング・システムにより管理されるデータベースに、各GUIDを保存する工程と、
    を含むことを特徴とする、方法。
  16. 請求項15に記載の方法において、
    前記子ステップが、関連する親ステップより先に実行される前処理ステップ、オペレータがステップ・パラメータを設定するのを補佐するトレーニング・ステップ及び関連する親ステップの後に実行される後処理ステップとして分類されることを特徴とする、方法。
  17. 請求項13に記載の方法において、
    関連するオペレーションを実行する前記ステップの前記分類作業工程は、格納ステップのリストの各親ステップへの組込みを含むことを特徴とする、方法。
  18. 請求項17に記載の方法において、
    更に、2つ以上の子ステップに対する少なくとも1つの共通インプットの供給を含むことを特徴とする、方法。
  19. 請求項13に記載の方法において、
    前記リソース・データは、関連ステップがそのオペレーションを実行できるようにするために設定されるべきパラメータを含むことを特徴とする、方法。
  20. 請求項1に記載の方法において、更に、
    前記ステップ・プログラムの少なくとも1つの選択されたステップに関連する少なくとも1つのステップ・プログラム・オブジェクトに、前記開発されるステップ・プログラムに関連する該少なくとも1つのステップ・プログラム・オブジェクトに関して固有のアドレスとして機能するURLインターネット・アドレスのコード化を組み合わせることを含め、名称を付ける工程を含むことを特徴とする、方法。
  21. 請求項17に記載の方法において、
    関連するオペレーションを実行する前記ステップの前記分類作業工程は、更に、共通データを利用するオブジェクトあるいはオブジェクトの値が変化した際に通知されるべきオブジェクトを列挙したレファレンス・リストの、各親ステップへの組込みを含むことを特徴とする、方法。
  22. 請求項21に記載の方法において、
    前記分類作業工程は、更に、あるステップのインプットを他のステップのアウトプットと関連させるレファレンス要素フィールドの、各データ・オブジェクトへの組込みを含むことを特徴とする、方法。
  23. 実行可能な機械視覚システム・ステップ・プログラムをステップ・プログラム開発システム上で開発するオブジェクト指向の方法であって、前記開発されるステップ・プログラムは、複数の予想されるターゲット・システムのうちの1つにおいて実行可能であり、該方法は、
    (a)利用可能な視覚ステップ・プログラムのステップのリストから、少なくとも1つの視覚ステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、
    該選択された少なくとも1つの視覚ステップ・プログラムのステップのそれぞれは、少なくとも1つの視覚ステップ・オブジェクトに関連しており、該少なくとも1つの視覚ステップ・オブジェクトのそれぞれは、ターゲット・システム上で前記関連ステップを実行するための少なくとも1つの視覚ステップ・エージェントを選択する工程と、
    (b)前記視覚ステップ・プログラムが動作されるべき少なくとも1つのターゲット・システムを供給する工程であって、
    該ターゲット・システムは、複数の固有の視覚ステップ・エージェントを含んでおり該ターゲット・システム上で動作が可能な、該ターゲット・システムに固有のステップ・エンジンを備え、該ターゲット・システムに固有のステップ・エンジンは、前記少なくとも1つの選択された視覚ステップ・プログラムのステップに関連する前記少なくとも1つの視覚ステップ・オブジェクトに応答して、各該少なくとも1つの選択された視覚ステップ・プログラムのステップに関連する該少なくとも1つの視覚ステップ・オブジェクトに対して、該ターゲット・システム上で動作が可能な少なくとも1つの視覚ステップ・エージェントを選択し、前記ステップ・プログラムのステップを動作させるべきターゲット・システム上で前記関連視覚ステップを実行し、該視覚ステップ・プログラムを該ターゲット・システム上で該ターゲット・システムに固有のステップ・エンジンを用いて動作させる工程と、
    を含むことを特徴とする、方法。
  24. 実行可能なステップ・プログラムをステップ・プログラム開発システム上で開発するオブジェクト指向の方法において、
    前記開発されるステップ・プログラムは、関連ステップ・プログラムのステップに固有の少なくとも1つのエディタ・オブジェクトを有する、少なくとも1つのステップを含み、該方法は、
    (a)利用可能なステップ・プログラムのステップのリストから、少なくとも1つのステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、
    該選択された少なくとも1つのステップ・プログラムのステップは、少なくとも1つのステップ・エディタ・オブジェクトに関連しており、該少なくとも1つのステップ・エディタ・オブジェクトは、該ステップに関連するステップに固有のデータの編集を可能にするために、少なくとも1つのステップ・エディタ・GUI・ネイティブ・オブジェクトを選択する工程と、
    (b)前記エディタ・オブジェクトを用いて、選択された少なくとも1つのステップ・エディタ・GUI・ネイティブ・オブジェクトを編集する工程であって、
    前記開発されるステップ・プログラムは、少なくとも1つの関連ステップ・エディタ・オブジェクトを含み、前記編集工程は、前記関連ステップに関してシステム利用者により編集され得るステップに固有のデータのみを、コンピュータ・システムに接続されたディスプレイ画面上に表示することを含む工程と、
    を含むことを特徴とする、方法。
  25. 請求項24に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、
    特定のステップ・プログラムのステップに関連する前記ステップ・エディタ・オブジェクトは、前記ステップ・オブジェクトのパラメータ・データ・タイプに基づいたユーザ・インターフェイス・コントロールを表示することを特徴とする、方法。
  26. 請求項25に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、
    前記ユーザ・インターフェイス・コントロールは、数値入力フィールド、文字入力フィールド、チェック・ボックス、ポップ−アップ−リスト、ドロップ−ダウン・リスト及びラジオボタンから成るグループから選択されることを特徴とする、方法。
  27. 実行可能なステップ・プログラムをステップ・プログラム開発システム上に開発するオブジェクト指向の方法であって、
    前記開発されるステップ・プログラムは、複数の予想されるターゲット・システムのうちの1つにおいて実行可能であり、該方法は、
    (a)利用可能なステップ・プログラムのステップのリストから、少なくとも1つのステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、
    該選択された少なくとも1つのステップ・プログラムのステップのそれぞれは、少なくとも1つのステップ・オブジェクト及び少なくとも1つのステップ・エディタ・オブジェクトに関連しており、該少なくとも1つのステップ・オブジェクトは、該ステップに関連するステップに固有のデータの編集を可能にするために、少なくとも1つのステップ・エディタ・GUI・ネイティブ・オブジェクトを選択する工程と、
    (b)前記ステップ・プログラムが動作されるべき少なくとも1つのターゲット・システムを供給する工程であって、
    該ターゲット・システムは、複数の固有のステップ・エージェントを含んでおり該ターゲット・システム上で動作が可能な、該ターゲット・システムに固有のステップ・エンジンを備え、該ターゲット・システムに固有のステップ・エンジンは、前記少なくとも1つのステップ・オブジェクトに応答して、該少なくとも1つのステップ・オブジェクトのそれぞれに対して、該ターゲット・システム上で動作が可能な少なくとも1つのステップ・エージェントを選択し、前記ステップ・プログラムのステップを動作させるべきターゲット・システム上で前記関連ステップを実行し、該ステップ・プログラムを該ターゲット・システム上で該ターゲット・システムに固有のステップ・エンジンを用いて動作させる工程と、
    (c)前記エディタ・オブジェクトを用いて、選択された少なくとも1つのステップ・エディタ・GUI・ネイティブ・オブジェクトを編集する工程であって、
    前記開発されるステップ・プログラムは、少なくとも1つの関連ステップ・エディタ・オブジェクトを含み、前記編集工程は、前記関連ステップに関してシステム利用者により編集され得るステップに固有のデータのみを、コンピュータ・システムに接続されたディスプレイ画面上に表示することを含む工程と、
    を含むことを特徴とする、方法。
JP2009000359A 1998-03-16 2009-01-05 ソフトウェア・ステップ・プログラムを構成するためのオブジェクト指向方法 Pending JP2009163742A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/039,653 US6226783B1 (en) 1998-03-16 1998-03-16 Object oriented method of structuring a software step program

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000537133A Division JP2004515826A (ja) 1998-03-16 1998-07-28 ソフトウェアステッププログラムを構成するためのオブジェクト指向方法

Publications (1)

Publication Number Publication Date
JP2009163742A true JP2009163742A (ja) 2009-07-23

Family

ID=21906630

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000537133A Pending JP2004515826A (ja) 1998-03-16 1998-07-28 ソフトウェアステッププログラムを構成するためのオブジェクト指向方法
JP2009000359A Pending JP2009163742A (ja) 1998-03-16 2009-01-05 ソフトウェア・ステップ・プログラムを構成するためのオブジェクト指向方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2000537133A Pending JP2004515826A (ja) 1998-03-16 1998-07-28 ソフトウェアステッププログラムを構成するためのオブジェクト指向方法

Country Status (7)

Country Link
US (1) US6226783B1 (ja)
EP (1) EP1070289A4 (ja)
JP (2) JP2004515826A (ja)
KR (1) KR20010041944A (ja)
AU (1) AU759260B2 (ja)
CA (1) CA2323608A1 (ja)
WO (1) WO1999048000A1 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3731980B2 (ja) * 1997-08-20 2006-01-05 富士通株式会社 コンピュータネットワークシステム及び携帯型コンピュータ
US7016539B1 (en) 1998-07-13 2006-03-21 Cognex Corporation Method for fast, robust, multi-dimensional pattern recognition
JP3807860B2 (ja) * 1999-01-29 2006-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法および装置、並びにメソッド活動度計算方法および装置
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
AU5025600A (en) 1999-05-17 2000-12-05 Foxboro Company, The Process control configuration system with parameterized objects
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6769095B1 (en) 1999-07-23 2004-07-27 Codagen Technologies Corp. Hierarchically structured control information editor
IL147665A0 (en) * 1999-07-23 2002-08-14 Codagen Technologies Corp Hierarchically structured control information editor
US7882426B1 (en) 1999-08-09 2011-02-01 Cognex Corporation Conditional cell execution in electronic spreadsheets
EP1132863A1 (en) * 2000-03-08 2001-09-12 MVTec Software GmbH Method and system for developing image processing applications
US6763515B1 (en) * 2000-06-05 2004-07-13 National Instruments Corporation System and method for automatically generating a graphical program to perform an image processing algorithm
US8302072B2 (en) * 2000-06-05 2012-10-30 National Instruments Corporation System and method for programmatically generating a graphical program based on a sequence of motion control, machine vision, and data acquisition (DAQ) operations
US7376904B2 (en) 2000-06-13 2008-05-20 National Instruments Corporation Automatic generation of programs with GUI controls for interactively setting or viewing values
US7849416B2 (en) * 2000-06-13 2010-12-07 National Instruments Corporation System and method for graphically creating a sequence of motion control, machine vision, and data acquisition (DAQ) operations
US7917863B2 (en) * 2000-06-13 2011-03-29 National Instruments Corporation System and method for graphically creating a sequence of motion control operations
US7313761B1 (en) * 2001-03-13 2007-12-25 Cognex Technology And Investment Corporation Tree-style hierarchical control with graphical depiction of non-hierarchical interrelationships
US6944851B1 (en) * 2001-04-30 2005-09-13 General Electric Capital Corporation Method and system for executing a computer program
US7047522B1 (en) * 2001-04-30 2006-05-16 General Electric Capital Corporation Method and system for verifying a computer program
US6968538B2 (en) * 2001-06-01 2005-11-22 Symyx Technologies, Inc. System and methods for integration of custom classes into pre-existing objects models
US8056009B2 (en) * 2001-06-02 2011-11-08 Cognex Technology And Investment Corporation System for initiating communication between a user interface and a vision processor
US20020184347A1 (en) * 2001-06-02 2002-12-05 Steven Olson Configuration of a machine vision system over a network
US7275026B2 (en) * 2001-07-18 2007-09-25 The Mathworks, Inc. Implicit frame-based processing for block-diagram simulation
US7079141B2 (en) * 2001-08-27 2006-07-18 National Instruments Corporation System and method for specifying a machine vision process using different programming methodologies
US7890868B2 (en) * 2002-08-13 2011-02-15 National Instruments Corporation Selecting a connectable element of a hardware device in a measurement system
US7765521B2 (en) * 2002-08-29 2010-07-27 Jeffrey F Bryant Configuration engine
US20040045009A1 (en) * 2002-08-29 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Observation tool for signal processing components
US20040045007A1 (en) * 2002-08-30 2004-03-04 Bae Systems Information Electronic Systems Integration, Inc. Object oriented component and framework architecture for signal processing
US7293112B2 (en) * 2002-11-12 2007-11-06 National Instruments Corporation Graphical program node for displaying acquired images
CA2425719A1 (en) * 2003-04-25 2004-10-25 Dean Mills Modular system and method for programming machine automation controls
US8081820B2 (en) 2003-07-22 2011-12-20 Cognex Technology And Investment Corporation Method for partitioning a pattern into optimized sub-patterns
US8185840B2 (en) * 2003-08-15 2012-05-22 National Instruments Corporation Mixed signal analysis system and method of use
US7529764B2 (en) * 2004-01-12 2009-05-05 Hitachi Global Storage Technologies Netherlands B.V. GUI for data pipeline
US7864178B2 (en) * 2005-11-09 2011-01-04 National Instruments Corporation Creating machine vision inspections using a state diagram representation
US8166459B2 (en) * 2008-02-27 2012-04-24 Sap Ag Apparatus and method of generating self-debugging computer software
WO2009155483A1 (en) * 2008-06-20 2009-12-23 Invensys Systems, Inc. Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
US8229890B2 (en) * 2008-12-15 2012-07-24 International Business Machines Corporation Opening document stored at multiple database replicas
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8122434B2 (en) * 2009-05-29 2012-02-21 Invensys Sytems, Inc. Methods and apparatus for control configuration control objects associated with a track attribute for selecting configuration information
US8499290B2 (en) * 2010-06-15 2013-07-30 Microsoft Corporation Creating text functions from a spreadsheet
US8331855B2 (en) 2010-07-12 2012-12-11 Invensys Systems, Inc. Methods and apparatus for process control with improved communication links
US9095002B2 (en) 2010-07-12 2015-07-28 Invensys Systems, Inc. Methods and apparatus for process control with improved communication links
US9679224B2 (en) 2013-06-28 2017-06-13 Cognex Corporation Semi-supervised method for training multiple pattern recognition and registration tool models
US20160209989A1 (en) * 2013-09-30 2016-07-21 Jin-Feng Luan Record and replay of operations on graphical objects
US10089081B2 (en) * 2014-12-31 2018-10-02 Excalibur Ip, Llc Method and/or apparatus for generating signal processing pipelines
US10474313B2 (en) 2015-03-03 2019-11-12 Soroco Private Limited Software robots for programmatically controlling computer programs to perform tasks
US10698571B2 (en) * 2016-12-29 2020-06-30 Microsoft Technology Licensing, Llc Behavior feature use in programming by example
US10956358B2 (en) 2017-11-21 2021-03-23 Microsoft Technology Licensing, Llc Composite pipeline framework to combine multiple processors
US10521195B1 (en) 2019-03-19 2019-12-31 Servicenow, Inc. Guided definition of an application programming interface action for a workflow
CN110109835B (zh) * 2019-05-05 2021-03-30 重庆大学 一种基于深度神经网络的软件缺陷定位方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885717A (en) * 1986-09-25 1989-12-05 Tektronix, Inc. System for graphically representing operation of object-oriented programs
US4759074A (en) * 1986-10-28 1988-07-19 General Motors Corporation Method for automatically inspecting parts utilizing machine vision and system utilizing same
US5005119A (en) * 1987-03-02 1991-04-02 General Electric Company User interactive control of computer programs and corresponding versions of input/output data flow
US5566294A (en) * 1989-09-29 1996-10-15 Hitachi, Ltd. Method for visual programming with aid of animation
US5077806A (en) * 1989-06-01 1991-12-31 Accuron Corporation Machine vision analysis apparatus
US5247651A (en) * 1990-04-17 1993-09-21 At&T Bell Laboratories Interactive computer program specification and simulation system
JPH04181403A (ja) * 1990-11-16 1992-06-29 Fanuc Ltd 対話形数値制御装置
US5517663A (en) * 1993-03-22 1996-05-14 Kahn; Kenneth M. Animated user interface for computer program creation, control and execution
US5481712A (en) * 1993-04-06 1996-01-02 Cognex Corporation Method and apparatus for interactively generating a computer program for machine vision analysis of an object
US5608909A (en) * 1994-04-15 1997-03-04 Microsoft Corporation Method and system for caching presentation data of a source object in a presentation cache
US5793964A (en) * 1995-06-07 1998-08-11 International Business Machines Corporation Web browser system
US5701451A (en) * 1995-06-07 1997-12-23 International Business Machines Corporation Method for fulfilling requests of a web browser
US5940296A (en) * 1995-11-06 1999-08-17 Medar Inc. Method and system for interactively developing a graphical control-flow structure and associated application software for use in a machine vision system
US5742504A (en) * 1995-11-06 1998-04-21 Medar, Inc. Method and system for quickly developing application software for use in a machine vision system
US5909504A (en) * 1996-03-15 1999-06-01 Cognex Corporation Method of testing a machine vision inspection system
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
US5923878A (en) * 1996-11-13 1999-07-13 Sun Microsystems, Inc. System, method and apparatus of directly executing an architecture-independent binary program
US5950201A (en) * 1996-12-06 1999-09-07 International Business Machines Corporation Computerized design automation method using a single logical PFVL paradigm
US5892941A (en) * 1997-04-29 1999-04-06 Microsoft Corporation Multiple user software debugging system
US5978521A (en) * 1997-09-25 1999-11-02 Cognex Corporation Machine vision methods using feedback to determine calibration locations of multiple cameras that image a common object
US6128622A (en) * 1997-11-26 2000-10-03 International Business Machines Corporation IMS web studio taskguide

Also Published As

Publication number Publication date
AU8683298A (en) 1999-10-11
AU759260B2 (en) 2003-04-10
EP1070289A4 (en) 2002-08-21
US6226783B1 (en) 2001-05-01
WO1999048000A1 (en) 1999-09-23
JP2004515826A (ja) 2004-05-27
KR20010041944A (ko) 2001-05-25
CA2323608A1 (en) 1999-09-23
EP1070289A1 (en) 2001-01-24

Similar Documents

Publication Publication Date Title
JP2009163742A (ja) ソフトウェア・ステップ・プログラムを構成するためのオブジェクト指向方法
JP2004515826A5 (ja)
JP2001516910A (ja) マシンビジョンシステムのための図形制御流れ及び関連ソフトウェアを会話形で開発する方法及びシステム
WO2000067120A1 (en) Method and system for interactively developing graphical control-flow structure and associated software for machine vision system
CN110198247A (zh) 接口测试方法及系统
CN111736821B (zh) 可视化建模分析方法、系统、计算机设备和可读存储介质
CN113066160B (zh) 一种室内移动机器人场景数据的生成方法
CN104574357B (zh) 定位带有已知图形的基准点的系统和方法
JP2011165208A (ja) 画像処理アプリケーションを開発するための方法およびシステム
Zwierzycki et al. Parametric architectural design with point-clouds
JP4750464B2 (ja) 建物設計支援装置及び建物設計支援プログラム
JP2007200082A (ja) 組立性評価方法、そのシステム及びプログラム
WO1996023280A1 (en) Modelling and analysis of systems of three-dimensional object entities
CN115857930A (zh) 一种基于实景模型的原型快速设计方法及系统
US20130346141A1 (en) Workflow modeling with workets and transitions
JP4767309B2 (ja) 情報処理装置、情報処理方法、及びコンピュータプログラム
CN116882032B (zh) 一种建筑设计图集数字化、可视化及其应用方法与装置
CN116090405B (zh) 三维仿真方法、装置、设备及存储介质
CN117130717B (zh) RPA场景下HTMLayout应用程序的元素定位方法及系统
JP4388431B2 (ja) 工程部品表生成システム
KR102439122B1 (ko) 메타버스 환경 내 사용자 위치분석 모니터링 시스템
CN116700724B (zh) 一种基于模式法的立交平面交互式图形设计系统
Kvesić et al. Using SCT Generator and Unity in Automatic Generation of 3D Scenes and Applications
WO2024039393A1 (en) Method of automated creation of graphql and api server for a opc ua derived rdf graph
JP2868186B2 (ja) オブジェクト候補選定装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090625

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090924

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090929

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20091127

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20091216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100310