(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の画像処理装置における画像処理の方法では、複数のカメラを搭載し、これらのカメラが個々に非同期で連続的に撮像を行い、それらの撮像画像データについて画像処理を行うような場合には不適であった。
即ち、カメラを複数搭載する場合、複数系統からの非同期での処理要求の組み合わせは増大し、あらかじめ適切な優先順位を設定しておくことは困難となる。例えば、処理要求の重なり具合によって、ある時間での処理の多重度が上がり負荷が重くなる、また、処理時間がかかる処理が混ざるなど、CPUの負荷状態が刻々と変動する。このような環境下では、あらかじめきめた優先順位に従って処理を進めた場合、低優先順位の処理まで順番が回ってこなくなり、想定されている以上の遅れが発生し、タイムアウトによるエラーが発生する場合があった。
【0008】
さらに、画像撮像終了毎に各認識処理を一時中断して、優先順位を評価し、優先して実行する認識処理を決定するディスパッチ処理の負荷であるオーバーヘッドも作業効率を低下させる一因となる。特に、カメラを複数搭載する場合、ディスパッチ処理が増加してオーバーヘッドによる負荷が増大する。
また、近年のキャッシュ制御により高速化をはかっているCPUにとっては、タスクの切り替えは最小限に止めたほうがキャッシュのヒット率が保持されるために速度的に有利となる。
このように、従来方法では、優先順位の設定によっては、無駄なディスパッチ処理が発生する可能性があり、優先順位に従って想定された順番で処理を進めることはできるが、トータル的な作業効率は低下を生じるものとなっていた。
【課題を解決するための手段】
【0009】
請求項1記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記演算処理部は、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段とを有し、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置において、
前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段と、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段と、
前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定手段を備え、
前記優先度設定手段は、前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替えることを特徴とする。
【0010】
請求項2記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記演算処理部は、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段とを有し、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置において、
前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段と、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段と、
認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正手段を備え、
前記接続順位補正手段は、
前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替えることを特徴とする。
【0011】
請求項3記載の発明は、請求項2記載の発明と同様の構成を備えると共に、前記接続順位補正手段は、
前記複数のカメラの中で2番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして認識処理タスクの並び替えを実行することを特徴とする。
【0012】
請求項4記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置が行う画像処理方法において、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求工程と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て工程と、
前記複数の要求に基づく毎回の撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定工程とを備え、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理工程と、
前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定工程とを備え、
前記優先度設定工程は、前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替えることを特徴とする。
【0013】
請求項5記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置が行う画像処理方法において、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求工程と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て工程と、
前記複数の要求に基づく毎回の撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定工程とを備え、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理工程と、
認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正工程を備え、
前記接続順位補正工程は、
前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替えることを特徴とする。
【0014】
請求項6記載の発明は、請求項5記載の発明と同様の構成を備えると共に、前記接続順位補正工程は、
前記複数のカメラの中で2番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして認識処理タスクの並び替えを実行することを特徴とする。
【発明の効果】
【0015】
請求項1,2,4又は5では、複数の要求に基づいて撮像とその撮像画像の認識処理とを行う際に、撮像終了時に認識処理タスクの優先順位を更新し、認識処理タスクの認識終了毎に優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する。
これにより、一の認識処理が終了したときに、次に実行可能に認識処理タスクが存在すれば割込処理を介することなく次に認識処理につなぐことができ、割込処理の発生頻度を低減し、全体の処理の遅延をなくして迅速化を図ることが可能となる。
さらに、認識処理タスクの認識処理の終了毎に次の認識処理タスクに移行するので、一の認識処理の完了が複数回の割込処理により過剰に遅延することを抑止することが可能となる。従って、優先順位が低い認識処理タスクの場合でも、待ち時間が過剰に長くなることに起因するタイムアウトの発生を低減することが可能となる。
【0016】
さらに、請求項1又は4では、認識処理タスクがハード演算を含む場合に、そのハード演算占有率が高いものほど実行可能キューへの認識処理タスクの接続順位の優先度を高くするよう並び替える補正を行うことから、ハード演算によって得られる演算処理部の空き時間を次の認識処理タスクが有効活用することができ、複数の認識処理のトータルでの処理時間をより短くすることが可能となる。
【0017】
請求項2又は5では、複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間と複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とが既知又は取得可能である場合に、各カメラの連続撮像を開始した時刻とそれぞれの撮像画像の認識処理に要する画像認識処理時間とから、個々の撮像画像の認識処理の終了時刻を算出することができる。そして、個々の撮像について、算出した画像認識処理の終了時刻と目標とする画像認識処理終了時刻と比較することで遅延の発生及び遅延時間を求めることが可能である。
上記複数のカメラによる連続撮像を行った場合に、個々の撮像の何れかは目標とする画像認識処理終了時刻に対する余裕時間を生じる場合があるので、余裕時間を生じる撮像の認識処理タスクと遅延を生じる撮像の認識処理タスクの接続順位を入れ替えることで、いずれの認識処理タスクも遅延を解消する場合がある。
このような入れ替えによって遅延を解消する認識処理タスクの組み合わせを適宜探索し、実行可能キューへの認識処理タスクの接続順位を並び替えることにより、個々の撮像の認識処理の遅延を低減又は解消し、複数のカメラの連続撮像の認識処理のトータルでの処理時間をより短くすることが可能となる。
【0018】
請求項3又は6では、複数のカメラの中で2番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして、遅延時間の合計を低減させるための認識処理タスクの並び替えを実行するので、撮像完了を待たずに並び替える認識処理タスクの組み合わせを探索する処理を開始することができ、認識処理のトータルでの処理時間をさらに短くすることが可能となる。
【発明を実施するための形態】
【0020】
[発明の実施形態の全体構成]
本発明の実施形態について、
図1乃至
図17に基づいて説明する。本実施形態は、撮像画像内の電子部品Cにおける中心位置や傾きを検出するために画像処理を行う画像処理装置19が電子部品実装装置100に搭載され、電子部品Cを基板Kに実装する位置決め制御に利用される場合の例を示している。
【0021】
[電子部品実装装置]
図1は電子部品実装装置100の平面図である。電子部品実装装置100は、基板Kに各種の電子部品Cの搭載を行うものであって、電子部品Cの搭載手段として、
図1に示すように、搭載される電子部品Cを供給する複数の電子部品フィーダ101と、電子部品フィーダ101を複数並べて保持する電子部品供給部としてのフィーダバンク102と、一定方向に基板Kを搬送する基板搬送手段103と、当該基板搬送手段103による基板搬送経路の途中に設けられた基板Kに対する電子部品搭載作業を行うための搭載作業部104と、電子部品Cを吸着する吸着ノズル108を保持して電子部品Cの保持を行う部品保持手段としてのヘッド106と、ヘッド106を所定範囲内の任意の位置に駆動搬送するヘッド移動手段としてのX−Yガントリ107と、吸着ノズル108に吸着された電子部品Cの撮像を行う部品用カメラ6と、搭載作業部104の基板Kに付された基板マークMの撮像を行う基板用カメラ4と、部品用カメラ6による撮像位置に照明光を照射する照明装置(図示略)と、基板用カメラ4による撮像位置に照明光を照射する照明装置(図示略)と、電子部品実装装置100の各構成に対して制御を行うマシン制御装置13(
図3参照)と、マシン制御装置13に対して作業者による各種の設定の入力及びコマンドの入力を行うためのマンマシンインターフェイス(図示略)と、カメラ4又は6の撮像画像から探索対象となる電子部品C又は基板マークMの位置認識処理を実行する画像処理装置19(
図3参照)とを備えている。
また、上記電子部品実装装置100は、基板搬送手段103を挟んでその両側に、電子部品フィーダ101、フィーダバンク102、ヘッド106、X−Yガントリ107、部品用カメラ6及び基板用カメラ4をそれぞれ一つずつ設ける構成としている。
画像処理装置19は、カメラ4又は6による基板マークM又は電子部品Cの撮像画像からこれらの正確な位置情報を求め、マシン制御装置13に出力することでヘッド106の位置決め動作に反映させるために利用される。
カメラ4及び6はいずれもCCDカメラ又はCMOSカメラであり、部品用カメラ6は定位置において下方から吸着ノズル108に吸着された電子部品Cを撮像し、基板用カメラ4はヘッド106に搭載されて上方から搭載作業部104に搬送された基板Kの基板マークMを撮像する。
【0022】
以下の説明では、主に部品用カメラ6により電子部品Cが撮像される場合を例として説明を行うが、撮像対象は電子部品Cに限定されるものではなく、基板用カメラ4による基板マークMの撮像時にも後述する構成及び処理が適用可能であることは言うまでもない。
また、以下の説明において、水平面に沿って互いに直交する一の方向をX軸方向とし、他の方向をY軸方向とし、垂直上下方向をZ軸方向と称することとする。
【0023】
基板搬送手段103は、図示しない搬送ベルトを備えており、その搬送ベルトにより基板をX軸方向に沿って搬送する。
また、前述したように、基板搬送手段103による基板搬送経路の途中には、電子部品を基板Kへ搭載する搭載作業部104が設けられている。基板搬送手段103は、搭載作業部104まで基板Kを搬送すると共に停止して、図示しない保持機構により基板Kの保持を行う。つまり、基板Kは保持機構により保持された状態で安定した電子部品Cの搭載作業が行われる。
【0024】
それぞれのヘッド106は、その先端部で空気吸引により電子部品Cを保持する六本の吸着ノズル108と、この吸着ノズル108をZ軸方向に駆動する駆動源であるZ軸モータと、吸着ノズル108を介して保持された電子部品CをZ軸方向を中心として回転駆動させる回転駆動源であるθ軸モータとが設けられている。
また、吸着ノズル108は負圧発生装置に接続され、当該吸着ノズル108の先端部において吸気吸引を行うことにより電子部品Cの吸着及び保持が行われる。
つまり、これらの構造により、搭載作業時には、吸着ノズル108の先端部で所定の電子部品フィーダ101から電子部品Cを吸着し、所定位置で基板に向かって吸着ノズル108を下降させると共に吸着ノズル108を回転させて電子部品Cの向きの調整を行いつつ搭載作業が行われる。
また、前述した各部品用カメラ6は、ベースフレーム114に固定支持されている。
【0025】
各X−Yガントリ107は、X軸方向にヘッド106の移動を案内するX軸ガイドレール107aと、このX軸ガイドレール107aと共にヘッド106をY軸方向に案内する二本のY軸ガイドレール107bと、X軸方向に沿ってヘッド106を移動させる駆動源であるX軸モータと、X軸ガイドレール107aを介してヘッド106をY軸方向に移動させる駆動源であるY軸モータとを備えている。そして、各モータの駆動により、ヘッド106を二本のY軸ガイドレール107bの間となる領域のほぼ全体に搬送することを可能としている。
なお、各X−Yガントリ107は、二本のY軸ガイドレール107bを共用している。
また、各モータには、ぞれぞれの回転量を検出するエンコーダが装備されており、その回転角度がマシン制御装置13に認識され、所望の回転量となるように制御されることにより、ヘッド106を介して吸着ノズル108の位置決めやカメラ6への移動を行っている。
【0026】
各フィーダバンク102には、複数の電子部品フィーダ101がX軸方向に沿って羅列して載置装備される。
各電子部品フィーダ101は、後端部に電子部品Cが一列に並んで封止された部品テープのリール(図示略)が保持されており、部品テープはリールから電子部品フィーダ101の先端部(基板側の端部)の上側に設けられた部品受け渡し位置101aまで繰り出され、当該部品受け渡し位置101aにおいて吸着ノズル108により電子部品Cの吸着が行われるようになっている。
【0027】
マシン制御装置13は、基板Kに搭載する電子部品Cのリスト、搭載順番、各電子部品Cの部品吸着位置(いずれの電子部品フィーダ101から受け取るか)及び基板Kにおける搭載位置等が定められた搭載プログラムを記録し、当該搭載プログラムに従って各X−Yガントリ107のX軸モータ、Y軸モータ及びZ軸モータを制御し、ヘッド106の位置決め制御を行う。また、このマシン制御装置13は、吸着時の電子部品Cに対してθ軸モータを駆動して吸着ノズル108を回転させて角度修正制御を行い、X軸モータ及びY軸モータにより位置修正制御を行う。
また、マシン制御装置13は、上記電子部品Cの角度修正制御及び位置修正制御を行うために、各カメラ6による電子部品Cの撮像制御と電子部品Cの位置や姿勢を認識するための要求を画像処理装置19に対して実行する。
【0028】
上記構成からなる電子部品実装装置100は、
図2の動作フローチャートに従って電子部品の搭載を行う。
即ち、マシン制御装置13は、X−Yガントリ107のX軸モータ、Y軸モータを制御してヘッド106を電子部品Cの所定の電子部品フィーダ101に対する吸着位置に移動し(ステップS101)、Z軸モータを制御して所定の吸着ノズル108の下降により電子部品Cの吸着を行う(ステップS102)。
なお、複数の電子部品Cをそれぞれ複数の吸着ノズル108に吸着するために、ステップS101とS102の動作は、電子部品Cの吸着数に応じて繰り返し実行する。
しかる後に、部品用カメラ6の撮像位置に向かってヘッド106の移動を開始する(ステップS103)。
かかる移動の際には、まず、X−Yガントリ107のX軸モータ、Y軸モータを所定の目標速度まで加速させ(ステップS104)、目標速度に達すると、当該目標速度を維持しつつ各電子部品Cについてカメラ6の撮像位置を通過させる(ステップS105)。この時、画像処理装置19では、部品用カメラ6を制御して撮像を実行する。
各電子部品Cの撮像後は、マシン制御装置13は、X−Yガントリ107のX軸モータ、Y軸モータを制御して、所定の低速状態となるまで減速し(ステップS106)、基板Kに対する搭載位置にヘッド106を移動させる(ステップS107)。その際、必要があれば、基板マークMの撮像位置にヘッド106を移動して基板マークMの撮像を実行する。
その後、ヘッド106が搭載位置に位置決めされると、Z軸モータを制御して吸着ノズル108を下降し、電子部品Cの搭載を行う(ステップS108)。
また、ヘッド106が吸着を行っている全ての電子部品Cについて搭載が完了したか否かが判定され(ステップS109)、全ての電子部品Cについて搭載が完了するまで、ステップS107とS108の動作が繰り返し実行される。
そして、全ての電子部品Cについて搭載が完了すると、搭載動作制御は終了する。
なお、上記の動作制御では、後述するノンストップ撮像の場合を例示したが、ストップ撮像の場合には、ステップS104において各モータの加速から減速までを行い、ステップS105で撮像位置でヘッド106を位置決め停止させて撮像を行い、ステップS107で各モータの加速から減速までを行い、ステップS108で搭載位置で位置決め停止を行う。
また、上記の動作制御では、一方のヘッド106についてのみ説明を行ったが、実際には、各ヘッド106についてステップS101〜S109までの制御が非同期で個々に実行される。
また、画像処理装置19は、上記ステップS103からステップS108までの間で、電子部品Cの位置及び姿勢の認識処理を実行する。
【0029】
[画像処理装置]
図3は、電子部品実装装置100に搭載された画像処理装置19とその周辺の装置構成図である。
画像処理装置19は、個々に非同期に撮像を行う基板用カメラ4,4(
図3では図示略)と、個々に非同期に撮像を行う部品用カメラ6,6と、各基板用カメラ4,4の照明装置(図示略)と、各部品用カメラ6の照明装置8(
図4参照)と、各カメラ4,6の撮像制御及び撮像による画像データを記憶する画像入力部15と、画像データから基板マークMの位置認識、種別の識別、電子部品Cの位置及び姿勢の認識のための認識処理を行う演算処理部18とを備えている。
また、画像入力部15は、LANポート20とこれに接続された画像メモリ7とを備えており、このLANポート20には追加の部品用カメラ6の増設が可能となっている。
例えば、カメラ6からUDP(User Datagram Protocol)により画像が転送される場合、LANポート20にてパケットの取りこぼしが無いように配慮し、どの処理よりも最優先でパケットを画像に変換する必要がある。
なお、基板用カメラ4もLANポートを設けて増設可能としても良い。
【0030】
画像入力部15は演算処理部18の制御CPU11と並列で動作が可能である。
各部品用カメラ6(増設した部品用カメラ6を含む、以下、同様)は、それぞれ非同期に撮像を行い、それぞれの入力回路3を介して個別の画像メモリ7に画像データを記憶することができる。
また、図示を省略しているが、基板用カメラ4,4も非同期に撮像を行い、それぞれの入力回路を介して個別の画像メモリに画像データを記憶することができる。
そして、各画像メモリ7は、出力回路5を介してモニタ16に接続されており、各カメラ4,6により撮像した画像データを表示することができる。
また、画像入力部15では、撮像処理以外に、演算制御回路9を用いて、画像メモリ7に記憶された画像データに対して、フィルタ演算やマッチング演算などの大量の繰り返しの演算処理を制御CPU11と並列で高速に動作させることが可能である。即ち、これらの繰り返し演算処理は制御CPU11に負荷がかからないようになっている。
【0031】
演算処理部18は、制御CPU11が画像処理を行うための作業用メモリ10と、制御CPU11を電子部品実装装置100の全体を制御するマシン制御装置13と接続するインターフェイス12とを備えている。また、制御CPU11と画像入力部15とは内部バス(PCIe)で接続されている。
そして、各カメラ6からのデータは、各画像メモリ7に格納されるのと並列して、演算制御回路9にてデータ処理が行われ、制御CPU11がアクセス可能な作業用メモリ10にデータ転送されるようになっている。
画像撮像の指令は、制御CPU11が出す。各カメラ6に撮像させる撮像要求を出した後、制御CPU11は、上述の撮像、及びデータ転送処理中は別の作業を行うことが可能である。
演算制御回路9で行うデータ処理は、撮像時だけでなく、制御CPU11の指令で、いつでも各画像メモリ7のデータに対して行うことができる。
制御CPU11は、作業用メモリ10のデータ処理中においても、演算制御回路9を制御して並列処理を行うことで効率良く作業を進めることができる。
また、マシン制御装置13からの処理要求は、コマンドとして、インターフェイス12を介して画像処理装置19に送信され、画像処理装置19での処理結果がレスポンスとして、マシン制御装置13に返信される。
【0032】
[撮像制御]
図4は電子部品Cの撮像に関する主要な構成を示した説明図、
図5は撮像方式の説明図であって
図5(A)は電子部品のストップ撮像における平面図、
図5(B)は基板マークのストップ撮像における平面図、
図5(C)は電子部品のノンストップ撮像における平面図、
図5(D)は基板マークのノンストップ撮像における平面図である。
画像処理装置19に接続された部品用カメラ6の上部に照明装置8が設けられ、撮像時には点灯するよう画像処理装置19により制御される。
マシン制御装置13は、撮像対象となる電子部品Cを各吸着ノズル108に電子部品フィーダ101からピックアップし、吸着保持した後、各吸着ノズル108を備えるヘッド106を制御して、部品用カメラ6の上に移動させ、撮像を行う。
【0033】
[撮像方式]
撮像方式として、静止撮像としてのストップ撮像と移動撮像としてのノンストップ撮像の2つをサポートする。
図5(A)に示すように、ストップ撮像は、部品用カメラ6上で対象物である電子部品Cを静止させ、照明装置8を点灯させ、画像処理装置19に撮像を指示する。
また、ノンストップ撮像は、あらかじめ画像処理装置19に撮像タイミングを示すX軸モータのエンコーダカウンタ値をセットしておき、エンコーダパルスを画像処理装置19に入力し、
図5(C)に示すように、ヘッド106の移動により設定されたカウント値になったら、画像処理装置19が照明装置8を点灯させ、部品用カメラ6による撮像を実行する。
【0034】
また、基板マークMの撮像についても同様である。
即ち、ストップ撮像は、
図5(B)に示すように、基板マークM上で基板用カメラ4を静止させ、照明装置を点灯させ、画像処理装置19に撮像を指示する。
また、ノンストップ撮像は、あらかじめ画像処理装置19に撮像タイミングを示すX軸モータのエンコーダカウンタ値をセットしておき、エンコーダパルスを画像処理装置19に入力し、
図5(D)に示すように、ヘッド106の移動により設定されたカウント値になったら、画像処理装置19が照明装置を点灯させ、基板用カメラ4による撮像を実行する。
【0035】
ノンストップ撮像で、ヘッド106に設けられた複数の吸着ノズル108に保持される複数の電子部品(ここでは、ノズル108,電子部品C共に三つのみを図示する)をヘッド106が部品用カメラ6上をノンストップで移動する際に、連続的に撮像し、各々の画像データを順次別々のメモリ空間に格納する。
画像処理装置19は画像撮像を最優先し、マシンの動きに合わせて所望の画像を取りこぼさないようにしている。
また、ノンストップ撮像においては、複数の電子部品Cについて個別にマシン制御装置13から画像処理装置19に認識コマンドを出すものとし、認識コマンド順序が各電子部品Cの搭載順を示すものとする。
これにより、例えば、各吸着ノズル108の並び順と各電子部品Cの搭載の順番が一致している場合には、画像処理装置19は連続処理される複数の電子部品Cが順番に撮像されると、個々の電子部品Cについてその搭載の順番を識別することができ、例えば、搭載の順番に従って認識の優先順位が定められているような場合には、これに応じた認識処理を実行することができる。
【0036】
また、ノンストップ撮像において、ヘッド106の移動速度が既知であるとすると、画像処理装置19には撮像タイミングを示すX軸モータのエンコーダカウンタ値が予めセットされているので、画像処理装置19は、第1の撮像(最初の電子部品の撮像)の完了のタイミングを検知できたなら、以降の撮像(残りの電子部品の撮像)の完了のタイミングの予測が可能である。
また、画像処理装置19は、認識対象物の種別や端子数等のデータから、制御CPU11による撮像画像の認識処理に要する画像認識処理時間の予測が可能である。
このとき、画像処理装置19が、連続処理される複数の電子部品Cについて、マシン制御装置13から搭載の順番だけでなく、最後の電子部品の画像撮像完了から個々の電子部品Cの搭載位置までの移動時間という相対的なタイミング情報が受け渡される事で、ヘッド移動に支障をきたさない程度に余裕を持ったタスクのスケジューリングが可能となる。また、複数のカメラによる複数の画像入力系統の処理についても、それぞれの系統の第1の撮像がすべて完了した時点で複数の画像入力系統の処理をひとつの時間軸に並べることができるようになる。
即ち、最後の電子部品Cの画像撮像完了の時刻と相対的なタイミング情報とにより、個々の電子部品Cがそれぞれの搭載位置に到達する時刻(目標とする画像認識終了時刻)を算出することが可能である。
これにより、
図3に示すように複数の画像入力系統について、非同期に撮像タイミングが重なり又は時間的に近接し、複数の認識処理を行わなければならない場合に、先の側の認識処理のスケジューリングの余裕時間になるべく影響を与えずに後の側の認識処理を割り込ませていき、複数の画像入力系統に対して、効率的に認識処理を実行することができる。この効率的な認識処理については
図13の例により後述する。
【0037】
[タスク構成]
次に、画像処理装置19において、画像認識のために制御CPU11により実行されるプログラムのタスク構成を
図6に示す。これにより、上記タスク構成について説明する。
図6に示すタスク構成は、主に、コマンド管理を行う「タスク割り当て手段」としてのコマンド受付タスク34と、認識処理を行う三つの認識処理タスク37〜39と、サブルーチンモジュールである画像入力API(Application Program Interface)35と、タイマ割込みを処理するハンドラのボディ部であるタイマ処理46と、撮像終了割り込みを処理するハンドラのボディ部である割込み処理36とから成る。なお、認識処理タスクの個体数は、処理の数に応じて増減することが可能である。
また、
図6の符号45はコマンド管理ブロック、47は画像入力ステータス管理ブロックを示している。
【0038】
また、
図6に示すタスク構成は、UDP画像変換タスク50とUDP画像認識タスク51とを備えている。エンコーダパルスなどをトリガにして入力された同期信号により、画像データ32がUDP変換タスク50に取り込まれる。このときUDPにより画像データ32が、連続した複数のパケットにより送信されることを想定すると、UDPはハンドシェイクをしないため、UDP変換タスク50は連続した複数のパケットを取りこぼさないような配慮が必要となる。多数のパケットを取りこぼしてしまい、画像処理装置19から不必要なパケット再送要求が頻発しないように、UDP変換タスク50はどの処理よりも最優先で実施されることが望ましい。
取り込みが完了するとUDP画像認識タスク51を呼び出し、画像処理を実施後、認識結果を取得する。
【0039】
[タスク構成:コマンド受付タスク]
図3のマシン制御装置13から画像処理装置19への撮像とその撮像画像の認識処理とを実行させる要求は
図6に示すコマンド30として通知される。
コマンド受付タスク34は、コマンド30を受信すると、コマンド管理ブロック45を参照し、タスクのリソースを獲得して、受け付けたコマンドを登録する。
そして、獲得した認識処理タスク37(又は38又は39)に対してコマンド30を送信し、起床させる。そして、コマンド受付タスク34は、次のコマンド待ち状態となる。
これにより、コマンド受付タスク34は「前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段」として機能し、当該機能の実行により「タスク割り当て工程」が実行される。
【0040】
認識処理タスク37(又は38又は39)はコマンドの内容を解析し、撮像要求部としての画像入力API35を呼び出し、画像撮像要求を行い、画像撮像が終了したら、ノンストップ部品認識40、ストップ部品認識41、ノンストップ基板マークM認識48、ストップ基板マークM認識49、メンテナンスコマンド43、ティーチング44の六つのカテゴリのコマンドモジュールの内、コマンド30に該当するモジュールを呼び出して、コマンド処理を実行する。
【0041】
また、それぞれのコマンド処理で
図3の画像入力部15の演算制御回路9を用いたハード演算処理を行うか否かを判定し、作業用メモリ10(
図3)内のコマンド管理ブロック45に保持しておく。
ハード演算処理を行う場合、コマンド処理時間に対してするハード演算処理時間の推定値の割合であるハード演算占有率を同時に求めておいてもよい。コマンド処理時間、ハード演算処理時間の推定値、及びハード演算占有率は、同じく、作業用メモリ10(
図3)内のコマンド管理ブロック45に保持しておく。
【0042】
また、認識処理タスク37〜39の優先順位は、コマンド受付タスク34に比べて低く設定されており、認識処理タスク37の実行中に、次のコマンドを受信したならば、コマンド受付タスク34が再び起床し、コマンド30の受信、コマンド管理ブロック45の参照、空きリソースの獲得及び受け付けたコマンドの登録が行われる。そして、獲得した認識処理タスク38(又は39)に対してコマンド30を送信し、起床させる。コマンド受付タスク34は、再び次のコマンド待ち状態となる。
【0043】
[タスク構成:認識処理タスク]
図7は認識処理タスク37〜39が実行する処理種別毎の優先順位の一例を示す図表である。
認識処理タスク37〜39が実行する処理種別毎の優先順位は高、中、低の3レベルで段階的に定義され、処理種別と撮像方法の種類とによって優先順位が割り当てられている。優先順位のレベルや割り当てのルールは使用するRTOS(real time operation system)の仕様、実装するアプリケーションの仕様に合わせて、自由に設定することができるが、ここでは、画像処理装置19において採用されている一例を説明する。
【0044】
この電子部品実装装置100に搭載された画像処理装置19においては、ノンストップ撮像で部品認識又はマーク認識処理を行う場合には、直ぐに次コマンドが投入されて、タイトな間隔での高速な処理が要求される場合が多いので優先順位を最も高い「高」としている。それに比べて、ヘッドが止まった状態で撮像を行うストップ撮像で部品認識又はマーク認識処理を行う場合は、ノンストップ撮像よりも時間的な余裕があるので優先順位を「中」としている。また、部品認識やマーク認識のように生産中のタクトが要求される処理ではないメンテナンスコマンドに関する処理は優先順位を「低」としている。
なお、優先順位が同じタスクが複数存在する場合には、処理が可能となった順番に実行される。例えば、ノンストップ撮像の場合には、対応する撮像が完了した順番でタスクが実行される。
【0045】
図8に「撮像とその撮像画像の認識処理とを実行させる複数の要求」としての複数の撮像認識コマンドが入力され、当該各コマンドが登録されて実行可能状態となった認識処理タスク37〜39の管理方法を示す。
図7に示す優先順位の設定に従って、実行タスクの切り替えは、RTOSの機能を用いて実現する。
各認識処理タスク37〜39は、いずれも、休止状態から実行可能状態に遷移すると、
図8のような優先順位別のキューにつながれ、管理される。優先順位が同じタスクについては、基本的に先に実行可能状態になった順番につながれる。即ち、この画像処理装置19の例では、撮像が終了した順番に応じてキューにつながれて、同じ優先順位の中での優先度がさらに定められる。
【0046】
また
図8に示す処理では、UDP画像変換タスク50による最優先処理を実行している。どの認識タスクよりも優先して、UDP画像変換タスク50を実行する。基本的にUDP画像変換タスク50により画像が完成した順番にUDP画像認識タスク51が呼び出され、実行可能状態になりキューにつながれる。
図8ではUDP画像認識タスク51の優先順位を「高」とした場合を図示しているがこれに限らない。例えば、ノンストップ撮像による部品又はマーク認識タスクの優先順位「高」とUDP画像変換タスク50の優先順位「最優先」との間に新たな優先順位を新規設定し、当該優先順位にUDP画像認識タスク51のキューをつないで、他の認識タスクよりも高順位で処理を実施しても良い(
図8では図示しない)。
【0047】
但し、連続する複数の認識処理について搭載順序の指示がある場合は、キューへの挿入位置を制御し、同一優先順位のタスクについても、さらに細かな優先度を定めることができる。即ち、この搭載順序に基づく優先度は、
図6のコマンド管理ブロック45に予め登録され、認識処理タスク37〜39をキューに接続する際に参照して搭載順序を比較し、搭載順序に応じたキューへの挿入位置を判定してつなげるようにする。このようにすれば、持ち時間を効率的に使え、実装装置全体として効率よく処理を進めることができる。
【0048】
また、コマンド管理ブロック45(
図6)に保持しておいたハード演算を行うか否かの情報は、認識処理タスク37〜39をキューに接続する際に参照して、ハード演算を行う認識処理タスクを先に実行するようキューへつなげることでハード演算中にその後ろの認識処理タスクの制御CPU11による処理を行えるようになり、そのまま後ろにつなげていた場合より、2つの認識処理タスクのトータル処理時間を短縮できる。また、同時にコマンド管理ブロック45(
図6)に保持しておいたハード演算占有率を用いて、ハード演算を行い且つハード演算占有率(認識処理内で演算制御回路9によるハード演算を行う比率)が高い認識処理タスクほど、優先度を高くしてキューに対する並び替えを行うことでよりきめ細かな制御が可能となる。
例えば、キューの順番入れ替えだけでなく、同一優先レベル内で優先度に差をつけることが可能となる。
これにより、上記制御CPU11は、「前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定手段」として機能し、「前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替える」処理を行う。また、これらを実行することにより、「優先度設定工程」が実行されることとなる。
そして、RTOSは、ディスパッチ要求があると、最も優先順位の高く、その中でもキューの最も先頭につながれたタスク(例えば、
図8における左上のタスク)を実行状態へと遷移させる。
【0049】
ここで、基本的な動作パターンである一軸(一つのヘッドによる部品実装動作)でのノンストップ撮像時の動作のタイミングチャートを示す
図9を参考にしつつ、認識処理タスク37〜39について説明する。
ノンストップ撮像における3つの撮像認識のコマンド要求が連続して投入されると、コマンド受付タスク34はコマンド管理ブロック45の参照、タスクのリソースの獲得、受け付けたコマンドの登録の処理を繰り返す(時刻t1〜t2)。
これにより、認識処理タスク37、38及び39は、撮像認識コマンドを受信した順番に実行可能状態となり、それぞれのタスクの実行内容に基づく優先順位によって、実行状態となるタスクが決定することになる。いずれのタスクも優先順位が同じである場合には、基本的に先に実行可能状態となっているタスクが優先される。つまり、各認識処理タスク37〜39は、画像撮像が完了した順に処理されることになる。
【0050】
ノンストップ撮像で連続的に複数の電子部品の認識が行われる場合、最初に搭載される電子部品の認識処理タスクについては、同一優先順位の実行可能タスクキューの先頭につながれて、最優先で処理されるが、実行可能タスクキューの先頭に接続されたタスクが既に実行中である場合には、その次に接続するようにすれば、現在実行中のタスクを中断することがなく、画像処理装置全体として効率よく処理を進めることができる。
【0051】
また、認識処理タスク37〜39の優先順位は、リアルタイムに画像撮像が行えるよう、最初の画像撮像終了までは、すべての認識処理タスクに対して同様に、最も高い優先順位が設定される。これにより、認識処理タスク37が画像撮像要求を出すと、最優先で撮像が開始され、他の処理が先に実行される事により撮像が遅れを生じるような事態を排除し、適正なタイミングで撮像が実行されることとなる。そして、先に実行状態となっていた認識処理タスク37が画像撮像要求を出し(時刻t2)、続いて認識処理タスク38、39の順で撮像要求を出すこととなる。
なお、上述のように各認識処理タスク37〜39について当初は最も高い優先順位が設定されるが、認識処理タスク37の画像データが取得されると、処理種別及び撮像方法によって定められた優先順位に再設定される。このような優先順位の再設定は、カメラを複数使用する場合にも同様に行われる。即ち、制御CPU11は、「前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段」として機能する。また、当該機能により「第一の設定工程」が実行される。
また、このように連続して画像撮像要求を出す場合、最初の撮像である第1画像データ撮像が行われると(時刻t3〜t4)、その終了時にのみ割込み通知要求を設定し(時刻t4)、二番目以降の撮像終了時(時刻t7,t10)についてはあえて割込み通知要求を設定しない。
【0052】
画像撮像、画像データの転送など
図3に示す画像入力部15のハードウエアがサポートする機能を呼び出すためのモジュールとして設けたのが画像入力API35である。画像入力API35は、ハードウエア依存部分を隠蔽し、独立性の高いアプリケーションの実装を実現している。
画像入力API35での処理は、ハードウエアのキックとその返答待ちである。画像入力API35は、サブルーチンとして呼び出されるので、認識処理タスクとして動作する。
画像入力API35を呼び出した時点で既に画像撮像が終了していれば、そのまま処理は続行されるが、画像撮像を行う場合、認識処理タスクは画像撮像が終了するまでは、休止状態となる。
【0053】
例えば、
図9では、3つの認識処理タスクが撮像要求を出した後、すべてのタスクは撮像終了待ちとなっている。第1画像データ撮像が時刻t4で終了すると、撮像通知割込み33がかかり、割込み処理36が実行される(時刻t4)。割込み処理36は、割込み要因を解析し、該当する画像の撮像終了(第1画像データ)を待っている認識処理タスク37を起床する(時刻t5)。
【0054】
認識処理タスク37は、画像データを取得し、認識処理に移行した時点で処理種別によって、適切な優先順位に動的に切り替えられる。
このタイミングでタスクのディスパッチ処理が動作し、複数の認識処理タスクが実行可能であった場合、優先順位の高いタスクに切り替わる。
図9の場合は、時刻t5において、他に実行可能なタスクが存在しないので(認識処理タスク38,39は画像データを取得していないので)、これらの処理は行われず、そのまま、認識処理タスク37が実行される。
一方、画像入力部15は制御CPU11と並行処理が可能であるため、第2画像データ撮像処理が第1画像認識処理中に実行される(時刻t6〜t7)。
そして、認識処理結果を示すレスポンスが生成されたならば、コマンド受付タスク34に送信され、
図3の画像処理装置19からマシン制御装置13へとレスポンス31が受け渡されることになる。
【0055】
こうして、認識処理タスク37が終了した時点で、同じ優先順位で、かつ第2画像データ撮像が終了している認識処理タスク38に制御が移る(時刻t8)。そして同様な処理を経て、第3画像データ撮像処理が第2画像認識処理中に実行される(時刻t9〜t10)と共に、認識処理結果のレスポンスが返答され、認識処理タスク38が終了したら(時刻t11)、認識処理タスク39に制御が移る(時刻t11〜t12)。
これらの過程において、画像認識処理が次の画像データ撮像の完了より早く終了しない限り、第2画像データ、第3画像データの撮像終了時に撮像通知割込みは発生しないので、同じ優先順位のタスク間での遷移は起こらない。
【0056】
この画像処理装置19では、優先順位の高い認識処理は途中、極力、不用意な割り込み処理やシステムコールによるディスパッチ処理が発生しないようにタスク制御を行い、最速で画像認識の結果が得られるように考慮している。
また、
図11において後述するが、低優先順位のタスクが待ち時間の経過とともに優先順位を上げて、タイムアウトエラーを防止する仕組みとして、コマンド管理ブロック45に登録された各コマンド別に、コマンド経過時間と待ち時間を管理するようにし、タイマ処理にて、時間の更新を行い、それぞれの時間を評価し、必要に応じて、優先順位の再設定、及びタスク切り替えのリクエストを発行する。
【0057】
[認識処理タスクによる処理]
それでは、各タスクと処理モジュールの動作を順を追って説明する。
図10に認識処理タスク37〜39による処理のフローチャートを例示する。
認識処理タスク37〜39は、迅速に画像撮像を行えるように、ステップS1のコマンド解析とステップS2の画像撮像要求とについては、コマンド受付タスク34に次いで高い優先順位で動作させる。
【0058】
まず、コマンド解析では受け渡されたコマンド文字列を解析し、処理種別に応じた優先順位を取得する(ステップS1)。
演算処理部18は、前述したように、処理種別毎の優先順位を予め定めて記憶しており(
図7参照)、これが参照される。
【0059】
次に、画像撮像要求の処理では、
図6の画像入力API35の撮像開始I/Fを呼び出し、ハードウエアをキックする(ステップS2)。これにより、電子部品C又は基板マークMの撮像が開始される。なお、これにより、画像入力API35は、「撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部」として機能し、当該機能が実行されることにより「撮像要求工程」が実行される。
そして、画像撮像ステータス取得の処理では、画像入力API35の撮像ステータスI/Fを呼び出す(ステップS3)。
そして、撮像完了の有無を判定し(ステップS4)、撮像が終了していない場合には撮像完了待ちとなり(ステップS5)、休止状態になる。また、撮像が終了した場合には、
図6に示す割込み処理36にて起床される。撮像完了の有無をチェック(ステップS4)で撮像が終了いれば、そのまま処理が続行される。
【0060】
そうして、撮像完了の状態で認識処理タスクに制御が移ってきたら、タスク優先順位再設定(ステップS6)を行う。設定する優先順位はコマンド解析(ステップS1)で取得済みの値である。
即ち、制御CPU11は、「複数の要求に基づくそれぞれの撮像完了時に認識処理タスクの優先順位を設定又は更新する設定手段」としての処理を行う。
ここで一旦、タスク切り替え要求を出し(ステップS7)、続いて、認識処理を行い(ステップS8)、認識処理終了後再度、タスク切り替え要求を出す(ステップS9)。なお、ステップS1〜S9の処理は、カメラを複数使用する場合も基本的には同様である。そして、ステップS9の処理を行うことにより制御CPU11は、「前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段」として機能し、「進行管理工程」を実行する。
また、タスク切り替え要求を行う(ステップS7、S9)際は、
図6のコマンド管理ブロック45を参照し、登録コマンドが自身のみであるとか、自身が最も高い優先順位であるとか、タスク切り替えが発生し得ない状況であることが明確な場合は、システムコールの呼び出しは行わないようにする。
【0061】
[タイマ処理]
図6に示すタイマ処理46について、
図11のフローチャートに基づいて説明する。このタイマ処理46では、優先順位の低いことが原因でいつまでも順番が回ってこないタスクについて、その待ち時間が予め設定された時間を超過した場合に優先順位を高くする処理が行われる。
このタイマ処理46は周期タイマハンドラに登録され、一定周期毎に呼び出される。例えば、この画像処理装置19では、最初の認識処理タスク37による処理が開始されると、それ以降1[ms]毎に呼び出されるものとする。
【0062】
まず、
図6のコマンド管理ブロック45を参照し、実行中の認識処理タスクのIDを取得する(ステップS11)。
次に、コマンド管理ブロック45へのコマンド登録数の回数分だけ、ステップS13〜S20の工程のループ処理を行ったか否かを判定する(ステップS12)。コマンド登録数の回数分の処理が完了した場合には、タイマ処理46を終了する。
【0063】
一方、コマンド登録数の回数分の処理を完了していない場合には、登録コマンドについて、割り付けられた認識処理タスク37〜39のタスクIDを取得する(ステップS13)。
そして、ステップS11で取得したIDと比較し、実行中か否かを判定する(ステップS14)。
実行中でなければ、待ち時間を更新し(ステップS15)、予め設定しておいた判定時間と更新された待ち時間とを比較し、さらにコマンドを受け付けてからの経過時間も考慮して優先順位再設定が必要か否かを判定する(ステップS16)。
【0064】
そして、コマンドを受け付けてからの経過時間が判定時間を超過しており、優先順位の再設定が必要な場合には、タスク優先順位の再設定を行う(ステップS17)。
さらに、設定された優先順位をチェックし(ステップS18)、再設定の結果、「高」まで優先順位が上がっていた場合には、そのタスクの緊急度が高くなっているものと判断し、この時点でタスク切り替え要求を出す(ステップS19)。
最後に、カレントポジションを次エントリへ進めて(ステップS20)、ループ先頭のステップS12に戻る。
即ち、制御CPU11は、上記ステップS13〜S15の処理により、「撮像とその撮像画像の認識処理とを実行させる要求を受け付けてからの経過時間を計時する計時手段」として機能する。なお、この「計時手段」としての処理は、撮像完了からその撮像画像の認識処理の開始までの待ち時間を計時する構成としてもよい。
また、制御CPU11は、上記ステップS16,S17の処理により、「前記経過時間又は待ち時間が規定時間を超えると、前記撮像画像の認識処理の開始を待つ認識処理タスクの優先順位を上げるように再設定するタスク再設定手段」として機能する。
【0065】
[2軸時のノンストップ撮像のタイミングチャート説明]
次に、二機のヘッド106により並行して電子部品Cの搭載を実行する場合にノンストップ撮像を行った場合の例について説明する。
図12は二軸時のノンストップ撮像のタイミングチャートを示している。
2つのヘッド106,106がそれぞれ3つの電子部品を保持しており、ほぼ同時に撮像が行われるよう、それぞれについてコマンド送信された場合の動きを記述している。
図12では一方のヘッド106をフロントヘッド、他方のヘッド106をリアヘッドと記述する。
【0066】
まず、送信されたコマンドは、時刻t1〜t2、t2〜t3の間にコマンド受付タスク34でリアルタイムで受け付けられ、認識処理タスク37〜39が割り当てられ、コマンド送信順に撮像要求が出される。すべての撮像要求に関する設定が終了したら、その旨をマシン制御装置13に通知し、ヘッド106,106の移動が開始される。
各ヘッド106,106が部品用カメラ6,6の上を通過する時刻t4のタイミングで、それぞれの画像撮像が行われる。画像入力部15は、
図3に示したように、2系統の入力回路3,3及び画像メモリ7,7を備えているので、それぞれの系統での同時撮像が可能となっている。また、画像入力部15は、制御CPU11と独立したハードモジュールであるので、画像撮像と認識処理が並列で行うことができる。
【0067】
この場合も、第1画像データ撮像が終了した場合のみ撮像通知割込みを出すよう設定されている(時刻t4)。
そして、これら2系統の撮像は同時刻の時刻t4〜t5、t7〜t9、t10〜t12に実行される。
認識処理は、初回の撮像終了の時刻t5の撮像通知割込みをトリガに開始される。
2軸なので認識処理タスクは計6つ用意され、それぞれ優先順位は同じである。
まずは、割込み通知のあったフロントヘッドの第1画像認識処理が実行される(時刻t5)。この画像処理装置19では、認識処理の終了時(時刻t8)に、画像撮像状況を調べて、次に実行すべき認識処理タスクに制御を渡すようにする。
時刻t8において、実行可能状態にあるのは、リアヘッドの第1画像認識処理のみであるのでこの処理が実行される。
その間、各ヘッド106,106の第2画像データ撮像が行われ(時刻t7〜t9)、リアヘッド106の第1画像の認識終了時の時刻t11では、フロント、リアの第2画像認識処理が実行可能状態になっている。図中では同時刻に画像撮像が終了しているが、先に待ちキューにつながれた方を優先して、フロントの第2画像認識処理(時刻t11〜t13)、リアの第2画像認識処理(時刻t13〜t14)の順で処理される。これらの間に、各ヘッド106,106の第3画像データ撮像が行われ(時刻t10〜t12)、リアの第2画像認識処理が終わると、フロントの第3画像認識処理(時刻t14〜t15)、リアの第3画像認識処理(時刻t15〜t16)の順で処理される。
【0068】
図13は二軸時のノンストップ撮像において、カメラ6における撮像時刻とカメラ6から各搭載位置までヘッド106が移動するための所要時間とが既知であるために、搭載時刻(各ヘッド106,106の各搭載点までの最短の到達時刻)が移動距離からの予測により既知となる場合のタイミングチャートを示している。
例えば、フロントヘッド、リアヘッド各処理で第2及び第3の部品の搭載時刻が時刻to13、to14、to15、to16であったとする。
図12において、フロントヘッド、リアヘッド各処理で第2及び第3の部品の搭載可能な時刻は、時刻t13、t14、t15、t16であった。
【0069】
フロントヘッドの第2及び第3部品の搭載可能な時刻t13、t15は搭載点への到達時刻より早いので問題ないが、リアヘッドの第2及び第3部品の搭載可能な時刻t14、t16においては、搭載点への搭載時刻to14、to16に対して遅延が発生してしまうことになる。
このように、画像データの撮像が完了した順に効率よく認識タスクを処理し、画像処理装置のトータル処理時間を最短で済むようスケジューリングしたとしても、電子部品実装装置としての効率は必ずしも良くはならない場合がある。
【0070】
例えば、各部品の搭載時刻to13〜to16とともに、各部品の画像認識処理時間が分かっているならば、上記の事例においては、フロントヘッドの第2及び第3部品について、搭載点への搭載時刻to13〜to16に間に合う範囲で処理の開始を遅らし、それにより捻出できたCPU11の余裕時間にリアヘッドの第2及び第3画像認識処理を割り当てて、時刻to14、to15に対して発生していた遅延を解消することができる。
各部品の搭載時刻to13〜to16は、コマンドパラメータとして、
図3のマシン制御装置13から受け渡されるものとする。搭載時刻to13〜to16は、それぞれのヘッドの第1画像データの撮像開始時刻を0とした相対時刻で表現される。これら搭載時刻to13〜to16はコマンド毎に
図3の作業用メモリ10内のコマンド管理ブロック45(
図6)に保持される。
【0071】
各部品の画像認識処理時間は、部品の種別や端子数のデータから推定できる。これら各部品の画像認識処理時間は、前述したように、
図3の作業用メモリ10内のコマンド管理ブロック45(
図6)にコマンド処理時間の推定値として保持しておけるようになっている。例えば、予め画像認識処理時間を実測しておき、テーブル化して
図3のマシン制御装置13の記憶装置に保持しておいてもよい。画像処理装置19の電源投入時に、マシン制御装置13よりテーブル化データを受け渡し、
図3の作業用メモリ10内に展開しておく。
図6のコマンド受付タスク34は、コマンド受付毎にこのテーブル化データを参照し、該当する画像認識処理時間(コマンド処理時間の推定値)を取得し、コマンド管理ブロック45内に保持しておく。以降、
図3の制御CPU11は画像認識処理時間が必要となった場合に短時間で簡単に取得することができる。
【0072】
また、このようなスケジューリングは、フロントヘッドとリアヘッドが非同期に動作している環境下において、複数の入力系統の要求(例えば、二つのヘッドによる認識処理の要求)が全く同時に発生することは稀であり、一度にスケジューリングをすべて完成させることはできない。まずは、先に発生した入力系統(例えば、先に要求が行われたヘッド)について、例えば前述した
図12に示すタイムチャートのように最短で処理が済むスケジューリングを作成し、新たに発生した入力系統(例えば、後に要求が行われたヘッド)について、最短での処理では搭載時刻を守れないことが明らかになった時点でリスケジューリングすべきである。
【0073】
例えば、
図13に示すタイミングチャートにおいて、フロントヘッドの第1部品の撮像の方がリアヘッドの第1部品の撮像より若干早かった場合を考えてみる。
まず、フロントヘッドの第1の部品の撮像完了時t5にフロントヘッド側の認識処理のスケジューリングが完成する。このとき、リアヘッドでの認識処理が発生するかどうかはまだ分からないので、
図12に示すタイミングチャートのように画像撮像が完了した順にスケジューリングされることになる。その後、リアヘッドの第1の部品の撮像完了のイベントを受け取り(図ではt5となっているが厳密には若干t5よりも遅れる)、フロントヘッド、リアヘッドで並列して動作しなければならないことが分かる。
【0074】
このときに、はじめて双方のヘッドの認識処理を同じ時間軸で並べて見ることができるようになるので、このイベントをリスケジューリングのタイミングとする。リスケジューリングの対象は未実行、すなわち、キューイングされている認識タスクである。
それぞれの認識タスクについて、画像認識処理時間と搭載時刻から処理の開始を遅延させることが可能な余裕時間を割り出す。
割り出された余裕時間分だけ処理の開始を遅延させた結果、他の認識タスクと処理が重なる場合には、搭載時刻からの遅延時間が最小になるようにキューの接続順序を入れ替え、さらに必要に応じて、2つのタスクについて同一優先順位のレベル内で優先度に差をつけるようにし、スケジュール制御を行う。
例えば、
図13の例では、フロントヘッドの第2及び第3画像処理について余裕時間分だけ処理の開始を遅延させるだけでは、リアヘッドの第2及び第3画像処理と処理が重なりを生じるが、フロントヘッドの第2画像処理とリアヘッドの第2画像処理、フロントヘッドの第3画像処理とリアヘッドの第3画像処理のそれぞれについて、キューの接続順序を入れ替え、同一優先レベル内で優先度に差をつけることにより処理の順番の入れ替えることにより、全ての画像処理が各々の搭載時刻までに終了し、ヘッドの待ち時間を解消又は低減することが可能となる。
【0075】
制御CPU11は、上記スケジュール制御を行うことにより、「認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正手段」として機能し、「前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻(搭載時刻)とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替える」処理を行う。また、上記処理により「接続順位補正工程」が実行される。
【0076】
またさらに、余裕時間が短くて、その時間内では完全に処理を終えることができない場合、この余裕時間を有効に使うようにタスクのスイッチングを行う。まず、開始時刻が遅い方のタスク(以降、後のタスク)の優先度を開始時刻が早い方のタスク(以降、先のタスク)より高く設定しておく。後のタスクは、搭載時刻に間に合う時刻に起床するようアラームをかけておき、先のタスクを実行する。アラーム時刻になり、後のタスクが起床すると、こちらの方が優先度が高いので認識処理タスクが切り替わる。後のタスクの処理が終わると、再び先のタスクに切り替わる。タスクのスイッチングのため、画像処理装置のトータルの処理時間は増加するが、ヘッドの待ち時間は最短で済み、電子部品実装装置としての効率はUpする。
【0077】
また、これらのリスケジューリング処理は、撮像完了イベントではなく、撮像露光のイベントを追加し、これをトリガにして動作させてもよい。
即ち、
図13に示すように、リアヘッドとフロントヘッドに対応する複数(二台)のカメラ6,6の中で最後の順番で連続撮像を行うカメラ(リアヘッド側)の連続撮像における最初の撮像(リアヘッドの第1画像データ撮像)の露光完了をトリガとして割込が発生し、認識処理タスクの並び替え(リスケジューリング)を実行する構成とすることが望ましい。なお、カメラ6を三台以上使用する場合には、2番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして割込が発生し、認識処理タスクの並び替え(リスケジューリング)を実行することが望ましい。
これにより、露光完了からデータ転送完了までの制御CPU11の待ち時間を有効活用でき、より速くリスケジューリングを終えることができる。
【0078】
なお、
図13に示すように、フロントヘッド側の第1画像データ撮像における露光時にも割込が発生するが、この時点では、リアヘッド側における搭載時刻及び遅延の発生の有無が判断できないので、リスケジューリングは実行されない。
また、カメラが3台以上存在し、これらが連続的に撮像行う場合(より厳密には、撮像のタイミングが近いことにより各カメラの撮像画像データの認識処理がタイミング的に重合を生じる場合)には、最後に撮像を行うカメラの第1画像データ撮像における露光時にリスケジューリングを実行する。
【0079】
[2軸でストップ撮像とノンストップ撮像とを実行するタイミングチャート説明(1)]
図14は、低優先順位のストップ撮像コマンドとノンストップ撮像の重複時のタイミングチャートについて撮像方法・処理種別のみで優先順位の設定をした場合を示したものである。
例えば、フロントヘッド106が、3つの電子部品を保持しており、ノンストップ撮像を行うのとほぼ同時刻にリアヘッド106でストップ撮像コマンドが実行され、ストップ撮像の画像撮像終了の方が早く終了した場合の動きを記述している。
【0080】
まず、送信されたコマンドは、時刻t1〜t2、t2〜t3の間にコマンド受付タスク34でリアルタイムで受け付けられ、認識処理タスクが割り当てられ、コマンド送信順に撮像要求が出される。
フロントヘッド106については、ノンストップ撮像の要求であるので、3つの撮像要求に関する設定が終了したら、その旨をマシン制御装置13に通知し、フロントヘッド106の移動が開始される。
リアヘッド106については、ストップ撮像の要求である。コマンド送信時には、ヘッド106は既に部品用カメラ6上に位置しているので、撮像要求に続いて、フロントヘッド106より早い時刻t4で撮像が開始される。
一方、フロントヘッドの撮像は時刻t4に遅れて時刻t5〜t8、t10〜t12、t13〜t15に実行される。
【0081】
リアヘッド106における認識処理は、リアヘッド106の撮像終了の時刻t6の撮像通知割込みをトリガに開始される。
認識処理タスクは計4つで、優先順位は、フロントヘッド106の3つが「高」、リアヘッド106の1つが「中」に設定されている。
また、この
図14の例のフロントヘッド106の画像認識処理は次の画像撮像終了よりも早く終了し、次の画像認識処理の開始までに空き時間が出来るような場合を事例としている。
【0082】
時刻t6では、実行可能状態の認識処理タスクはリアヘッド106の1つだけなので、時刻t7からリアヘッド106の認識処理タスクが実行中となる。
その後、時刻t8でフロントヘッド106の第1画像データ撮像が終了し、撮像通知割込みが入る。この時点でフロントヘッド106の第1画像認識処理タスクが実行可能状態となる。2つの実行可能状態の認識処理タスクで優先順位を比較し、実行タスクは、フロントヘッドの第1画像認識処理を行う認識処理タスクに切り替わる。
そして、第1画像認識処理の実行中に、第2画像データ撮像が時刻t10で開始され、時刻t11にフロントヘッドの第1画像認識処理は終了するが、この時点で、第2画像データの撮像は終了していない。そのため、実行可能なリアヘッドの認識処理タスクが再び実行タスクとなる。
【0083】
ノンストップ撮像処理において、認識処理時に時間がかかり、認識処理終了時に既に次の認識処理の画像データが用意されている場合は、途中で撮像通知割込みは発生しない。
しかし、
図14に示すように、次の画像処理の画像データが間に合っていない場合(撮像が完了していない場合)には、前の認識処理の終了時、画像撮像状況をチェックした際に、次の認識処理の画像撮像について、撮像通知割込みの発生要求を立てておく。
すると、第2画像データ撮像終了の時刻t12に撮像通知割込みが発生し、実行タスクをリアヘッドの認識処理タスクからフロントヘッドの第2画像認識処理を行う認識処理タスクに切り替えることができる。
【0084】
同様の仕組みで、フロントヘッドの第2画像認識処理タスクが終了する時刻t14で、タスク切り替えが起こり、リアヘッドの認識処理タスクが実行タスクとなる。そして、フロントヘッドの第3画像データ撮像が終了する時刻t15で撮像通知割込みが発生し、フロントヘッドの第3画像認識処理を行う認識処理タスクが実行タスクとなり、処理が終了する時刻t17でリアヘッドの認識処理タスクが唯一の実行可能状態のタスクとなるので、やっと制御が戻り、残りの処理を実行して時刻t18にすべての処理が終了となる。
このように優先順位が「中」の設定であると、他の認識処理タスクがすべて終了しないと処理の順番が回ってこない。
【0085】
[2軸でストップ撮像とノンストップ撮像とを実行するタイミングチャート説明(2)]
図15に待ち時間の累積時間により低優先順位のタスクの優先順位を動的に変動させるためのタイマ処理を組み込んだ場合のタイミングチャートを示す。この処理は、前述した
図14の処理に
図11に示したタイマ処理を組み込んだものであり、各ヘッド106,106の動作自体は
図14と同じである。
この
図15の処理は、時刻t8〜t11の待ち時間の間に、周期的に実行されるタイマ処理が入ると、リアヘッド106の認識処理タスクに所定時間以上の待ち時間が生じている場合に、その優先順位が再設定され、「中」から「高」に切り替えられる。
【0086】
これにより、フロントヘッド106の第1画像認識処理の終了時の時刻t11において、リアヘッド106の画像認識処理にタスク切替が行われる。
そして、このリアヘッド106の画像認識処理の終了時の時刻t14では、第2画像認識処理を実行する認識処理タスクが実行可能となっているので、当該認識処理タスクにタスク切り替えが行われる。
さらに、第2画像認識処理の終了時の時刻t16では、第3画像認識処理を実行する認識処理タスクが実行可能となっているので、当該認識処理タスクにタスク切り替えが行われる。
【0087】
このように、優先順位「中」のタスクのレスポンス時間が、優先順位の繰り上げにより、短縮、改善される。
また、これに伴い、割込処理の発生頻度が低減して、全体の処理時間も短縮される。
なお、この処理では、一般的に実行される周期的に時間の経過を報知するタイマ処理に優先順位の更新機能を持たせているので、発明の課題である割込処理の低減の趣旨に反するものではない。
【0088】
[1軸で搭載順序を考慮してノンストップ撮像とを実行するタイミングチャート説明]
図16に1軸でノンストップ撮像を行う場合であって、三つの電子部品の搭載の順序を反映させて認識処理を実行する場合のタイミングチャートを示す。
このノンストップ撮像では、第3撮像画像の電子部品Cが最初に搭載され、第2撮像画像の電子部品Cが二番目に搭載され、第1撮像画像の電子部品Cが最後に搭載される場合の認識処理である。この場合、搭載に順番を反映すると、いずれも処理の優先順位は「高」であるが、その中でも、優先順位が、第3撮像画像>第2撮像画像>第1撮像画像となる。
ヘッド106の動作が
図11の例と同じように制御される場合に、上述の有せ印順位を適用すると、まず、撮像要求が行われ(時刻t1〜t2)、撮像の順番に従って第1画像データ撮像が行われる(時刻t3〜t4)。
撮像終了時には、撮像通知割込が入り、割込処理が行われる結果、処理が可能な状態である第1画像認識処理を実行する認識処理タスクの処理が開始される(時刻t5)。
この時、第1画像認識処理の処理時間の長く、その実行中に第2画像データ撮像(時刻t6〜t7)と第3画像データ撮像(時刻t8〜t9)とが完了した場合、第3画像データ撮像の終了時の優先順位の更新において、第3画像認識処理の認識処理タスクが、タスクキューに対して、第2画像認識処理の認識処理タスクより前につながれた状態となる。
従って、第1画像認識処理が終了すると(時刻t10)、第3画像認識処理の認識処理タスクにタスクが切り替えられる。
さらに、第3画像認識処理が終了すると(時刻t11)、第2画像認識処理の認識処理タスクにタスクが切り替えられ、時刻t12で処理全体が終了する。
【0089】
[発明の実施の形態における効果]
上記画像処理装置19は、複数の撮像認識コマンドに基づいて撮像とその撮像画像の認識処理とを行う際に、撮像終了時に認識処理タスクの優先順位を更新し、認識処理タスクの認識終了毎に優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する。
これにより、一の認識処理が終了したときに、次に実行可能に認識処理タスクが存在すれば割込処理を介することなく次に認識処理につなぐことができ、割り込み通知、タスク切り替えを最小限に止め、OSのオーバーヘッド、キャッシュの入れ替え処理を削減することで、作業効率を向上することが可能となる。
【0090】
また、画像処理装置19では、処理種別にて認識処理タスクの優先順位を動的に切り替えることで、作業効率を向上できる。
さらに、処理待ち時間の経過に合わせて認識処理タスクの優先順位を上げることで、低優先順位の処理のタイムアウトを防止できる。
また、ノンストップ撮像する対象物について、撮像順に認識される場合に限らず、認識順を制御できるタスク管理手段を設けたことで、軸の搭載点までの移動時間を含めた範囲で効率良く、各部品の認識時間の配分ができ、システム全体として効率向上を図ることができる。なお、この場合、認識の順番を全ての電子部品Cについて搭載の順番に従わせる場合に限らず、一部の電子部品Cのみについて、例えば、最初に搭載が行われる電子部品のみについて認識を優先するというような補正を行うことも可能である。
また、認識の順番を全ての電子部品Cについて搭載の順番に従わせる場合には、よりきめ細かな認識順の制御が可能となり、理屈的には最後の搭載点までの移動時間をフルに使って、各部品の認識時間の配分ができ、システム全体として効率向上を図ることができる。
【0091】
さらに、画像処理装置19では、認識処理タスク37〜39がハード演算を含む場合に、そのハード演算占有率が高いものほど実行可能キューへの認識処理タスクの接続順位の優先度を高くするよう並び替える補正を行うことから、演算制御回路9によるハード演算によって得られる演算処理部18の制御CPU11の空き時間を次の認識処理タスクが有効活用することができ、複数の認識処理のトータルでの処理時間をより短くすることが可能となる。
例えば、
図17は、
図12のリアヘッド第1画像認識処理がハード演算を含むように変わった場合のタイミングチャートを示している。
リアヘッド第1画像認識処理(t8〜t13)に含まれるハード演算実行区間(t10〜t11)は、制御CPU11の空き時間となり、この時間(t10〜t11)にフロントヘッド第2認識処理を実行することができ、t18の終了時間をt10〜t11の時間だけ短縮することが可能となる。
【0092】
さらに、画像処理装置19では、複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間と複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とが既知又は取得可能である場合に、各カメラ6,6の連続撮像を開始した時刻とそれぞれの撮像画像の認識処理に要する画像認識処理時間とから、個々の撮像画像の認識処理の終了時刻を算出することができる。そして、個々の撮像について、算出した画像認識処理の終了時刻と目標とする画像認識処理終了時刻と比較することで遅延の発生及び遅延時間を求めることが可能である。
上記複数のカメラ6,6による連続撮像を行った場合に、個々の撮像の何れかは目標とする画像認識処理終了時刻に対する余裕時間を生じる場合があるので(例えば
図13のフロントヘッドにおける第2及び第3画像認識処理)、余裕時間を生じる撮像の認識処理タスクと遅延を生じる撮像の認識処理タスク(例えば
図13のリアヘッドにおける第2及び第3画像認識処理)の接続順位をそれぞれ入れ替えることで、いずれの認識処理タスクも遅延を解消する場合がある。
【0093】
このような入れ替えによって遅延を解消する認識処理タスクの組み合わせを適宜探索し、実行可能キューへの認識処理タスクの接続順位を並び替えることにより、個々の撮像の認識処理の遅延を低減又は解消し、複数のカメラの連続撮像の認識処理のトータルでの処理時間をより短くすることが可能となる。
特に上記のリスケジューリングでは、複数のカメラ6,6の中で最後の順番で連続撮像を行うカメラ6(リアヘッド側)の連続撮像における最初の撮像(第1画像データ撮像)の露光完了をトリガとして、遅延時間の合計を低減させるための認識処理タスクの並び替えを実行するので、撮像完了を待たずに並び替える認識処理タスクの組み合わせを探索する処理を開始することができ、認識処理のトータルでの処理時間をさらに短くすることが可能となる。