(57)【要約】      （修正有）【課題】複数のカメラの画像データを並列に処理する場合の画像処理効率を向上する。【解決手段】画像処理装置は、演算処理部と並列処理可能な複数系統の画像入力部と、複数のカメラによる画像データを格納する画像メモリとを備える。撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて、カメラによる撮像を要求し、認識処理タスクを割り当てる。撮像完了時にタスクの優先順位を設定又は更新し、認識終了毎に優先順位に従って、次に実行すべきタスクを選定し移行させる。連続撮像の認識処理の優先度を定めた実行可能キューへの認識処理タスクの接続順位を、ハード演算占有率が高いものほど優先度が高くなるよう並び替える。【選択図】図１０
2014178801.tif 000002
【特許請求の範囲】
【請求項１】
演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記演算処理部は、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段とを有し、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置において、
前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段と、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段と、
前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定手段を備え、
前記優先度設定手段は、前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替えることを特徴とする画像処理装置。
【請求項２】
演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記演算処理部は、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段とを有し、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置において、
前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段と、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段と、
認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正手段を備え、
前記接続順位補正手段は、
前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替えることを特徴とする画像処理装置。
【請求項３】
前記接続順位補正手段は、
前記複数のカメラの中で２番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして認識処理タスクの並び替えを実行することを特徴とする請求項２記載の画像処理装置。
【請求項４】
演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置が行う画像処理方法において、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求工程と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て工程と、
前記複数の要求に基づく毎回の撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定工程とを備え、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理工程と、
前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定工程とを備え、
前記優先度設定工程は、前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替えることを特徴とする画像処理方法。
【請求項５】
演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置が行う画像処理方法において、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求工程と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て工程と、
前記複数の要求に基づく毎回の撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定工程とを備え、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理工程と、
認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正工程を備え、
前記接続順位補正工程は、
前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替えることを特徴とする画像処理方法。
【請求項６】
前記接続順位補正工程は、
前記複数のカメラの中で２番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして認識処理タスクの並び替えを実行することを特徴とする請求項５記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像撮像中に既に入力済みの画像データを並列に処理する画像処理装置及び方法に関するものである。
【背景技術】
【０００２】
従来技術として、例えば、部品実装装置に適用されている画像処理装置では、複数の部品について連続して撮像が行われ、撮像により得られた画像データに対して、優先順位に従い、並列して認識処理を実行する部品認識方法が提案されている（例えば、特許文献１参照）。
この画像処理装置では、撮像終了をトリガにして、あらかじめ設定された優先順位に従って、認識処理を行う画像データを選定し直して、優先順位の高い画像データへの認識処理切り替え行っている。このときの優先順位は、回路基板への電子部品の装着順もしくは被検査物における大きさの順位としている。
【０００３】
図１８に上記画像処理装置が行う処理のタイムチャートを示す。
まず、従来の画像処理装置では、撮像の要求を受けると、画像データを所定のメモリに記憶するために、時刻ｔ１から所定のメモリに対するバス接続処理を実行する。
その後、時刻ｔ２から、第１画像データの撮像を開始する。そして、時刻ｔ３にて、画像撮像を終了し、メモリに併設されたコントローラから装置の制御及び画像処理を行うためのＣＰＵに対して割込信号を送出する。
これにより、ＣＰＵは、第２画像データの撮像のための設定や画像データの記憶領域の確保等を割込処理にて実行する。そして、割込処理の後に、ＣＰＵは、既に記憶された第１画像データに対し、第１画像認識処理を実行する。
【０００４】
一方、第１画像認識処理と並列して、カメラは第２画像データの撮像を実行する。時刻ｔ４から第２画像データの撮像を開始し、時刻ｔ５にて画像撮像終了し、ＣＰＵに対してメモリのコントローラから割込信号を送出する。
これにより、ＣＰＵは、処理中であった第１画像認識処理を一時中断する。さらに、ＣＰＵは第３画像データの撮像のための設定を割込処理にて実行する。そして、既に記憶された第１画像データ及び第２画像データについて、予め設定されている画像認識処理の優先順位を判定し、優先順位の高い方の画像認識処理を実行する。画像認識処理の優先順位が、例えば、第３画像データ、第２画像データ、第１画像データの順であるとすると、ＣＰＵは、画像撮像動作が終了して未処理状態にある第１画像データ及び第２画像データに対して、優先順位の高い第２画像データの方を第１画像データに優先して画像認識処理を実行する。
これにより、第１画像データ に対する画像認識処理は、当該第１画像データの画像認識処理よりも優先順位の高い画像データの画像認識処理が全て終了するまで一時中断することとなる。
【０００５】
上記割込処理の終了後、カメラにより第３画像データの撮像が実行される。時刻ｔ６から第３画像データの撮像を開始し、時刻ｔ７にて、画像撮像を終了し、メモリのコントローラからＣＰＵに対して、割込信号を送出する。ＣＰＵは、第２画像認識処理を一時中断し、上述したように優先順位を判定する。
前述したように、第３画像データの優先順位が最も高いので、当該第３画像データに対する画像認識処理がまず実行され、これが終わると時刻ｔ８において、その次に第２画像データにおける一時中断後の残りのデータに対して画像認識処理が実行され、さらに、これが終わると時刻ｔ９において、第１画像データにおける一時中断後の残りのデータに対して画像認識処理が実行され、時刻ｔ１０にて終了する。
このようにして全ての画像データに対して画像認識処理が終了したところで一連の画像撮像及び画像認識処理の作業は終了することとなる。
尚、このような、画像認識処理を実行する画像データの変更機能は、ＣＰＵのオペレーションシステムが、マルチタスク機能をサポートしていれば簡単に実現することが可能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第３７６２５１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の画像処理装置における画像処理の方法では、複数のカメラを搭載し、これらのカメラが個々に非同期で連続的に撮像を行い、それらの撮像画像データについて画像処理を行うような場合には不適であった。
即ち、カメラを複数搭載する場合、複数系統からの非同期での処理要求の組み合わせは増大し、あらかじめ適切な優先順位を設定しておくことは困難となる。例えば、処理要求の重なり具合によって、ある時間での処理の多重度が上がり負荷が重くなる、また、処理時間がかかる処理が混ざるなど、ＣＰＵの負荷状態が刻々と変動する。このような環境下では、あらかじめきめた優先順位に従って処理を進めた場合、低優先順位の処理まで順番が回ってこなくなり、想定されている以上の遅れが発生し、タイムアウトによるエラーが発生する場合があった。
【０００８】
さらに、画像撮像終了毎に各認識処理を一時中断して、優先順位を評価し、優先して実行する認識処理を決定するディスパッチ処理の負荷であるオーバーヘッドも作業効率を低下させる一因となる。特に、カメラを複数搭載する場合、ディスパッチ処理が増加してオーバーヘッドによる負荷が増大する。
また、近年のキャッシュ制御により高速化をはかっているＣＰＵにとっては、タスクの切り替えは最小限に止めたほうがキャッシュのヒット率が保持されるために速度的に有利となる。
このように、従来方法では、優先順位の設定によっては、無駄なディスパッチ処理が発生する可能性があり、優先順位に従って想定された順番で処理を進めることはできるが、トータル的な作業効率は低下を生じるものとなっていた。
【課題を解決するための手段】
【０００９】
請求項１記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記演算処理部は、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段とを有し、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置において、
前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段と、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段と、
前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定手段を備え、
前記優先度設定手段は、前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替えることを特徴とする。
【００１０】
請求項２記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記演算処理部は、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段とを有し、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置において、
前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段と、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段と、
認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正手段を備え、
前記接続順位補正手段は、
前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替えることを特徴とする。
【００１１】
請求項３記載の発明は、請求項２記載の発明と同様の構成を備えると共に、前記接続順位補正手段は、
前記複数のカメラの中で２番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして認識処理タスクの並び替えを実行することを特徴とする。
【００１２】
請求項４記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置が行う画像処理方法において、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求工程と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て工程と、
前記複数の要求に基づく毎回の撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定工程とを備え、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理工程と、
前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定工程とを備え、
前記優先度設定工程は、前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替えることを特徴とする。
【００１３】
請求項５記載の発明は、演算処理部と、
当該演算処理部と並列処理可能であって複数のカメラが接続される画像入力部と、
画像データを格納する画像メモリとを備え、
前記複数のカメラが非同期に連続撮像して得られる複数の画像データを処理する画像処理装置が行う画像処理方法において、
撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求工程と、
前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て工程と、
前記複数の要求に基づく毎回の撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定工程とを備え、
前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理工程と、
認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正工程を備え、
前記接続順位補正工程は、
前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替えることを特徴とする。
【００１４】
請求項６記載の発明は、請求項５記載の発明と同様の構成を備えると共に、前記接続順位補正工程は、
前記複数のカメラの中で２番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして認識処理タスクの並び替えを実行することを特徴とする。
【発明の効果】
【００１５】
請求項１，２，４又は５では、複数の要求に基づいて撮像とその撮像画像の認識処理とを行う際に、撮像終了時に認識処理タスクの優先順位を更新し、認識処理タスクの認識終了毎に優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する。
これにより、一の認識処理が終了したときに、次に実行可能に認識処理タスクが存在すれば割込処理を介することなく次に認識処理につなぐことができ、割込処理の発生頻度を低減し、全体の処理の遅延をなくして迅速化を図ることが可能となる。
さらに、認識処理タスクの認識処理の終了毎に次の認識処理タスクに移行するので、一の認識処理の完了が複数回の割込処理により過剰に遅延することを抑止することが可能となる。従って、優先順位が低い認識処理タスクの場合でも、待ち時間が過剰に長くなることに起因するタイムアウトの発生を低減することが可能となる。
【００１６】
さらに、請求項１又は４では、認識処理タスクがハード演算を含む場合に、そのハード演算占有率が高いものほど実行可能キューへの認識処理タスクの接続順位の優先度を高くするよう並び替える補正を行うことから、ハード演算によって得られる演算処理部の空き時間を次の認識処理タスクが有効活用することができ、複数の認識処理のトータルでの処理時間をより短くすることが可能となる。
【００１７】
請求項２又は５では、複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間と複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とが既知又は取得可能である場合に、各カメラの連続撮像を開始した時刻とそれぞれの撮像画像の認識処理に要する画像認識処理時間とから、個々の撮像画像の認識処理の終了時刻を算出することができる。そして、個々の撮像について、算出した画像認識処理の終了時刻と目標とする画像認識処理終了時刻と比較することで遅延の発生及び遅延時間を求めることが可能である。
上記複数のカメラによる連続撮像を行った場合に、個々の撮像の何れかは目標とする画像認識処理終了時刻に対する余裕時間を生じる場合があるので、余裕時間を生じる撮像の認識処理タスクと遅延を生じる撮像の認識処理タスクの接続順位を入れ替えることで、いずれの認識処理タスクも遅延を解消する場合がある。
このような入れ替えによって遅延を解消する認識処理タスクの組み合わせを適宜探索し、実行可能キューへの認識処理タスクの接続順位を並び替えることにより、個々の撮像の認識処理の遅延を低減又は解消し、複数のカメラの連続撮像の認識処理のトータルでの処理時間をより短くすることが可能となる。
【００１８】
請求項３又は６では、複数のカメラの中で２番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして、遅延時間の合計を低減させるための認識処理タスクの並び替えを実行するので、撮像完了を待たずに並び替える認識処理タスクの組み合わせを探索する処理を開始することができ、認識処理のトータルでの処理時間をさらに短くすることが可能となる。
【図面の簡単な説明】
【００１９】
【図１】電子部品実装装置の平面図である。
【図２】電子部品実装装置の搭載動作の動作フローチャートである。
【図３】電子部品実装装置に搭載された画像処理装置とその周辺の装置構成図である。
【図４】電子部品の撮像に関する主要な構成を示した説明図である。
【図５】図５は撮像方式の説明図であって図５（Ａ）は電子部品のストップ撮像における平面図、図５（Ｂ）は基板マークのストップ撮像における平面図、図５（Ｃ）は電子部品のノンストップ撮像における平面図、図５（Ｄ）は基板マークのノンストップ撮像における平面図である。
【図６】画像処理装置の制御ＣＰＵが画像認識のために実行するプログラムのタスク構成図である。
【図７】認識処理タスクが実行する処理種別毎の優先順位の一例を示す図表である。
【図８】撮像認識コマンドが入力され、実行可能状態となった認識処理タスクの管理方法を示す説明図である。
【図９】一軸による部品実装動作でのノンストップ撮像時の動作のタイミングチャートである。
【図１０】認識処理タスクによる処理のフローチャートである。
【図１１】タイマ処理のフローチャートである。
【図１２】二軸時のノンストップ撮像のタイミングチャートを示す。
【図１３】二軸時のノンストップ撮像において、搭載時刻（各搭載点までの最短の到達時刻）が既知の場合のタイミングチャートを示す。
【図１４】低優先順位のストップ撮像コマンドと連続撮像の重複時のタイミングチャートについて撮像方法・処理種別のみで優先順位の設定をした場合を示したものである。
【図１５】待ち時間の累積時間により低優先順位のタスクの優先順位を動的に変動させるためのタイマ処理を組み込んだ場合のタイミングチャートを示す。
【図１６】１軸でノンストップ撮像を行う場合であって、三つの電子部品の搭載の順序を反映させて認識処理を実行する場合のタイミングチャートを示す。
【図１７】二軸時のノンストップ撮像において、ハード演算を行った場合のタイミングチャートを示す。
【図１８】従来の画像処理装置が行う処理のタイムチャートを示す。
【発明を実施するための形態】
【００２０】
［発明の実施形態の全体構成］
本発明の実施形態について、図１乃至図１７に基づいて説明する。本実施形態は、撮像画像内の電子部品Ｃにおける中心位置や傾きを検出するために画像処理を行う画像処理装置１９が電子部品実装装置１００に搭載され、電子部品Ｃを基板Ｋに実装する位置決め制御に利用される場合の例を示している。
【００２１】
［電子部品実装装置］
図１は電子部品実装装置１００の平面図である。電子部品実装装置１００は、基板Ｋに各種の電子部品Ｃの搭載を行うものであって、電子部品Ｃの搭載手段として、図１に示すように、搭載される電子部品Ｃを供給する複数の電子部品フィーダ１０１と、電子部品フィーダ１０１を複数並べて保持する電子部品供給部としてのフィーダバンク１０２と、一定方向に基板Ｋを搬送する基板搬送手段１０３と、当該基板搬送手段１０３による基板搬送経路の途中に設けられた基板Ｋに対する電子部品搭載作業を行うための搭載作業部１０４と、電子部品Ｃを吸着する吸着ノズル１０８を保持して電子部品Ｃの保持を行う部品保持手段としてのヘッド１０６と、ヘッド１０６を所定範囲内の任意の位置に駆動搬送するヘッド移動手段としてのＸ−Ｙガントリ１０７と、吸着ノズル１０８に吸着された電子部品Ｃの撮像を行う部品用カメラ６と、搭載作業部１０４の基板Ｋに付された基板マークＭの撮像を行う基板用カメラ４と、部品用カメラ６による撮像位置に照明光を照射する照明装置（図示略）と、基板用カメラ４による撮像位置に照明光を照射する照明装置（図示略）と、電子部品実装装置１００の各構成に対して制御を行うマシン制御装置１３（図３参照）と、マシン制御装置１３に対して作業者による各種の設定の入力及びコマンドの入力を行うためのマンマシンインターフェイス（図示略）と、カメラ４又は６の撮像画像から探索対象となる電子部品Ｃ又は基板マークＭの位置認識処理を実行する画像処理装置１９（図３参照）とを備えている。
また、上記電子部品実装装置１００は、基板搬送手段１０３を挟んでその両側に、電子部品フィーダ１０１、フィーダバンク１０２、ヘッド１０６、Ｘ−Ｙガントリ１０７、部品用カメラ６及び基板用カメラ４をそれぞれ一つずつ設ける構成としている。
画像処理装置１９は、カメラ４又は６による基板マークＭ又は電子部品Ｃの撮像画像からこれらの正確な位置情報を求め、マシン制御装置１３に出力することでヘッド１０６の位置決め動作に反映させるために利用される。
カメラ４及び６はいずれもＣＣＤカメラ又はＣＭＯＳカメラであり、部品用カメラ６は定位置において下方から吸着ノズル１０８に吸着された電子部品Ｃを撮像し、基板用カメラ４はヘッド１０６に搭載されて上方から搭載作業部１０４に搬送された基板Ｋの基板マークＭを撮像する。
【００２２】
以下の説明では、主に部品用カメラ６により電子部品Ｃが撮像される場合を例として説明を行うが、撮像対象は電子部品Ｃに限定されるものではなく、基板用カメラ４による基板マークＭの撮像時にも後述する構成及び処理が適用可能であることは言うまでもない。
また、以下の説明において、水平面に沿って互いに直交する一の方向をＸ軸方向とし、他の方向をＹ軸方向とし、垂直上下方向をＺ軸方向と称することとする。
【００２３】
基板搬送手段１０３は、図示しない搬送ベルトを備えており、その搬送ベルトにより基板をＸ軸方向に沿って搬送する。
また、前述したように、基板搬送手段１０３による基板搬送経路の途中には、電子部品を基板Ｋへ搭載する搭載作業部１０４が設けられている。基板搬送手段１０３は、搭載作業部１０４まで基板Ｋを搬送すると共に停止して、図示しない保持機構により基板Ｋの保持を行う。つまり、基板Ｋは保持機構により保持された状態で安定した電子部品Ｃの搭載作業が行われる。
【００２４】
それぞれのヘッド１０６は、その先端部で空気吸引により電子部品Ｃを保持する六本の吸着ノズル１０８と、この吸着ノズル１０８をＺ軸方向に駆動する駆動源であるＺ軸モータと、吸着ノズル１０８を介して保持された電子部品ＣをＺ軸方向を中心として回転駆動させる回転駆動源であるθ軸モータとが設けられている。
また、吸着ノズル１０８は負圧発生装置に接続され、当該吸着ノズル１０８の先端部において吸気吸引を行うことにより電子部品Ｃの吸着及び保持が行われる。
つまり、これらの構造により、搭載作業時には、吸着ノズル１０８の先端部で所定の電子部品フィーダ１０１から電子部品Ｃを吸着し、所定位置で基板に向かって吸着ノズル１０８を下降させると共に吸着ノズル１０８を回転させて電子部品Ｃの向きの調整を行いつつ搭載作業が行われる。
また、前述した各部品用カメラ６は、ベースフレーム１１４に固定支持されている。
【００２５】
各Ｘ−Ｙガントリ１０７は、Ｘ軸方向にヘッド１０６の移動を案内するＸ軸ガイドレール１０７ａと、このＸ軸ガイドレール１０７ａと共にヘッド１０６をＹ軸方向に案内する二本のＹ軸ガイドレール１０７ｂと、Ｘ軸方向に沿ってヘッド１０６を移動させる駆動源であるＸ軸モータと、Ｘ軸ガイドレール１０７ａを介してヘッド１０６をＹ軸方向に移動させる駆動源であるＹ軸モータとを備えている。そして、各モータの駆動により、ヘッド１０６を二本のＹ軸ガイドレール１０７ｂの間となる領域のほぼ全体に搬送することを可能としている。
なお、各Ｘ−Ｙガントリ１０７は、二本のＹ軸ガイドレール１０７ｂを共用している。
また、各モータには、ぞれぞれの回転量を検出するエンコーダが装備されており、その回転角度がマシン制御装置１３に認識され、所望の回転量となるように制御されることにより、ヘッド１０６を介して吸着ノズル１０８の位置決めやカメラ６への移動を行っている。
【００２６】
各フィーダバンク１０２には、複数の電子部品フィーダ１０１がＸ軸方向に沿って羅列して載置装備される。
各電子部品フィーダ１０１は、後端部に電子部品Ｃが一列に並んで封止された部品テープのリール（図示略）が保持されており、部品テープはリールから電子部品フィーダ１０１の先端部（基板側の端部）の上側に設けられた部品受け渡し位置１０１ａまで繰り出され、当該部品受け渡し位置１０１ａにおいて吸着ノズル１０８により電子部品Ｃの吸着が行われるようになっている。
【００２７】
マシン制御装置１３は、基板Ｋに搭載する電子部品Ｃのリスト、搭載順番、各電子部品Ｃの部品吸着位置（いずれの電子部品フィーダ１０１から受け取るか）及び基板Ｋにおける搭載位置等が定められた搭載プログラムを記録し、当該搭載プログラムに従って各Ｘ−Ｙガントリ１０７のＸ軸モータ、Ｙ軸モータ及びＺ軸モータを制御し、ヘッド１０６の位置決め制御を行う。また、このマシン制御装置１３は、吸着時の電子部品Ｃに対してθ軸モータを駆動して吸着ノズル１０８を回転させて角度修正制御を行い、Ｘ軸モータ及びＹ軸モータにより位置修正制御を行う。
また、マシン制御装置１３は、上記電子部品Ｃの角度修正制御及び位置修正制御を行うために、各カメラ６による電子部品Ｃの撮像制御と電子部品Ｃの位置や姿勢を認識するための要求を画像処理装置１９に対して実行する。
【００２８】
上記構成からなる電子部品実装装置１００は、図２の動作フローチャートに従って電子部品の搭載を行う。
即ち、マシン制御装置１３は、Ｘ−Ｙガントリ１０７のＸ軸モータ、Ｙ軸モータを制御してヘッド１０６を電子部品Ｃの所定の電子部品フィーダ１０１に対する吸着位置に移動し（ステップＳ１０１）、Ｚ軸モータを制御して所定の吸着ノズル１０８の下降により電子部品Ｃの吸着を行う（ステップＳ１０２）。
なお、複数の電子部品Ｃをそれぞれ複数の吸着ノズル１０８に吸着するために、ステップＳ１０１とＳ１０２の動作は、電子部品Ｃの吸着数に応じて繰り返し実行する。
しかる後に、部品用カメラ６の撮像位置に向かってヘッド１０６の移動を開始する（ステップＳ１０３）。
かかる移動の際には、まず、Ｘ−Ｙガントリ１０７のＸ軸モータ、Ｙ軸モータを所定の目標速度まで加速させ（ステップＳ１０４）、目標速度に達すると、当該目標速度を維持しつつ各電子部品Ｃについてカメラ６の撮像位置を通過させる（ステップＳ１０５）。この時、画像処理装置１９では、部品用カメラ６を制御して撮像を実行する。
各電子部品Ｃの撮像後は、マシン制御装置１３は、Ｘ−Ｙガントリ１０７のＸ軸モータ、Ｙ軸モータを制御して、所定の低速状態となるまで減速し（ステップＳ１０６）、基板Ｋに対する搭載位置にヘッド１０６を移動させる（ステップＳ１０７）。その際、必要があれば、基板マークＭの撮像位置にヘッド１０６を移動して基板マークＭの撮像を実行する。
その後、ヘッド１０６が搭載位置に位置決めされると、Ｚ軸モータを制御して吸着ノズル１０８を下降し、電子部品Ｃの搭載を行う（ステップＳ１０８）。
また、ヘッド１０６が吸着を行っている全ての電子部品Ｃについて搭載が完了したか否かが判定され（ステップＳ１０９）、全ての電子部品Ｃについて搭載が完了するまで、ステップＳ１０７とＳ１０８の動作が繰り返し実行される。
そして、全ての電子部品Ｃについて搭載が完了すると、搭載動作制御は終了する。
なお、上記の動作制御では、後述するノンストップ撮像の場合を例示したが、ストップ撮像の場合には、ステップＳ１０４において各モータの加速から減速までを行い、ステップＳ１０５で撮像位置でヘッド１０６を位置決め停止させて撮像を行い、ステップＳ１０７で各モータの加速から減速までを行い、ステップＳ１０８で搭載位置で位置決め停止を行う。
また、上記の動作制御では、一方のヘッド１０６についてのみ説明を行ったが、実際には、各ヘッド１０６についてステップＳ１０１〜Ｓ１０９までの制御が非同期で個々に実行される。
また、画像処理装置１９は、上記ステップＳ１０３からステップＳ１０８までの間で、電子部品Ｃの位置及び姿勢の認識処理を実行する。
【００２９】
［画像処理装置］
図３は、電子部品実装装置１００に搭載された画像処理装置１９とその周辺の装置構成図である。
画像処理装置１９は、個々に非同期に撮像を行う基板用カメラ４，４（図３では図示略）と、個々に非同期に撮像を行う部品用カメラ６，６と、各基板用カメラ４，４の照明装置（図示略）と、各部品用カメラ６の照明装置８（図４参照）と、各カメラ４，６の撮像制御及び撮像による画像データを記憶する画像入力部１５と、画像データから基板マークＭの位置認識、種別の識別、電子部品Ｃの位置及び姿勢の認識のための認識処理を行う演算処理部１８とを備えている。
また、画像入力部１５は、ＬＡＮポート２０とこれに接続された画像メモリ７とを備えており、このＬＡＮポート２０には追加の部品用カメラ６の増設が可能となっている。
例えば、カメラ６からＵＤＰ(User Datagram Protocol)により画像が転送される場合、ＬＡＮポート２０にてパケットの取りこぼしが無いように配慮し、どの処理よりも最優先でパケットを画像に変換する必要がある。
なお、基板用カメラ４もＬＡＮポートを設けて増設可能としても良い。
【００３０】
画像入力部１５は演算処理部１８の制御ＣＰＵ１１と並列で動作が可能である。
各部品用カメラ６（増設した部品用カメラ６を含む、以下、同様）は、それぞれ非同期に撮像を行い、それぞれの入力回路３を介して個別の画像メモリ７に画像データを記憶することができる。
また、図示を省略しているが、基板用カメラ４，４も非同期に撮像を行い、それぞれの入力回路を介して個別の画像メモリに画像データを記憶することができる。
そして、各画像メモリ７は、出力回路５を介してモニタ１６に接続されており、各カメラ４，６により撮像した画像データを表示することができる。
また、画像入力部１５では、撮像処理以外に、演算制御回路９を用いて、画像メモリ７に記憶された画像データに対して、フィルタ演算やマッチング演算などの大量の繰り返しの演算処理を制御ＣＰＵ１１と並列で高速に動作させることが可能である。即ち、これらの繰り返し演算処理は制御ＣＰＵ１１に負荷がかからないようになっている。
【００３１】
演算処理部１８は、制御ＣＰＵ１１が画像処理を行うための作業用メモリ１０と、制御ＣＰＵ１１を電子部品実装装置１００の全体を制御するマシン制御装置１３と接続するインターフェイス１２とを備えている。また、制御ＣＰＵ１１と画像入力部１５とは内部バス（ＰＣＩｅ）で接続されている。
そして、各カメラ６からのデータは、各画像メモリ７に格納されるのと並列して、演算制御回路９にてデータ処理が行われ、制御ＣＰＵ１１がアクセス可能な作業用メモリ１０にデータ転送されるようになっている。
画像撮像の指令は、制御ＣＰＵ１１が出す。各カメラ６に撮像させる撮像要求を出した後、制御ＣＰＵ１１は、上述の撮像、及びデータ転送処理中は別の作業を行うことが可能である。
演算制御回路９で行うデータ処理は、撮像時だけでなく、制御ＣＰＵ１１の指令で、いつでも各画像メモリ７のデータに対して行うことができる。
制御ＣＰＵ１１は、作業用メモリ１０のデータ処理中においても、演算制御回路９を制御して並列処理を行うことで効率良く作業を進めることができる。
また、マシン制御装置１３からの処理要求は、コマンドとして、インターフェイス１２を介して画像処理装置１９に送信され、画像処理装置１９での処理結果がレスポンスとして、マシン制御装置１３に返信される。
【００３２】
［撮像制御］
図４は電子部品Ｃの撮像に関する主要な構成を示した説明図、図５は撮像方式の説明図であって図５（Ａ）は電子部品のストップ撮像における平面図、図５（Ｂ）は基板マークのストップ撮像における平面図、図５（Ｃ）は電子部品のノンストップ撮像における平面図、図５（Ｄ）は基板マークのノンストップ撮像における平面図である。
画像処理装置１９に接続された部品用カメラ６の上部に照明装置８が設けられ、撮像時には点灯するよう画像処理装置１９により制御される。
マシン制御装置１３は、撮像対象となる電子部品Ｃを各吸着ノズル１０８に電子部品フィーダ１０１からピックアップし、吸着保持した後、各吸着ノズル１０８を備えるヘッド１０６を制御して、部品用カメラ６の上に移動させ、撮像を行う。
【００３３】
［撮像方式］
撮像方式として、静止撮像としてのストップ撮像と移動撮像としてのノンストップ撮像の２つをサポートする。
図５（Ａ）に示すように、ストップ撮像は、部品用カメラ６上で対象物である電子部品Ｃを静止させ、照明装置８を点灯させ、画像処理装置１９に撮像を指示する。
また、ノンストップ撮像は、あらかじめ画像処理装置１９に撮像タイミングを示すＸ軸モータのエンコーダカウンタ値をセットしておき、エンコーダパルスを画像処理装置１９に入力し、図５（Ｃ）に示すように、ヘッド１０６の移動により設定されたカウント値になったら、画像処理装置１９が照明装置８を点灯させ、部品用カメラ６による撮像を実行する。
【００３４】
また、基板マークＭの撮像についても同様である。
即ち、ストップ撮像は、図５（Ｂ）に示すように、基板マークＭ上で基板用カメラ４を静止させ、照明装置を点灯させ、画像処理装置１９に撮像を指示する。
また、ノンストップ撮像は、あらかじめ画像処理装置１９に撮像タイミングを示すＸ軸モータのエンコーダカウンタ値をセットしておき、エンコーダパルスを画像処理装置１９に入力し、図５（Ｄ）に示すように、ヘッド１０６の移動により設定されたカウント値になったら、画像処理装置１９が照明装置を点灯させ、基板用カメラ４による撮像を実行する。
【００３５】
ノンストップ撮像で、ヘッド１０６に設けられた複数の吸着ノズル１０８に保持される複数の電子部品（ここでは、ノズル１０８，電子部品Ｃ共に三つのみを図示する）をヘッド１０６が部品用カメラ６上をノンストップで移動する際に、連続的に撮像し、各々の画像データを順次別々のメモリ空間に格納する。
画像処理装置１９は画像撮像を最優先し、マシンの動きに合わせて所望の画像を取りこぼさないようにしている。
また、ノンストップ撮像においては、複数の電子部品Ｃについて個別にマシン制御装置１３から画像処理装置１９に認識コマンドを出すものとし、認識コマンド順序が各電子部品Ｃの搭載順を示すものとする。
これにより、例えば、各吸着ノズル１０８の並び順と各電子部品Ｃの搭載の順番が一致している場合には、画像処理装置１９は連続処理される複数の電子部品Ｃが順番に撮像されると、個々の電子部品Ｃについてその搭載の順番を識別することができ、例えば、搭載の順番に従って認識の優先順位が定められているような場合には、これに応じた認識処理を実行することができる。
【００３６】
また、ノンストップ撮像において、ヘッド１０６の移動速度が既知であるとすると、画像処理装置１９には撮像タイミングを示すＸ軸モータのエンコーダカウンタ値が予めセットされているので、画像処理装置１９は、第１の撮像（最初の電子部品の撮像）の完了のタイミングを検知できたなら、以降の撮像（残りの電子部品の撮像）の完了のタイミングの予測が可能である。
また、画像処理装置１９は、認識対象物の種別や端子数等のデータから、制御ＣＰＵ１１による撮像画像の認識処理に要する画像認識処理時間の予測が可能である。
このとき、画像処理装置１９が、連続処理される複数の電子部品Ｃについて、マシン制御装置１３から搭載の順番だけでなく、最後の電子部品の画像撮像完了から個々の電子部品Ｃの搭載位置までの移動時間という相対的なタイミング情報が受け渡される事で、ヘッド移動に支障をきたさない程度に余裕を持ったタスクのスケジューリングが可能となる。また、複数のカメラによる複数の画像入力系統の処理についても、それぞれの系統の第１の撮像がすべて完了した時点で複数の画像入力系統の処理をひとつの時間軸に並べることができるようになる。
即ち、最後の電子部品Ｃの画像撮像完了の時刻と相対的なタイミング情報とにより、個々の電子部品Ｃがそれぞれの搭載位置に到達する時刻（目標とする画像認識終了時刻）を算出することが可能である。
これにより、図３に示すように複数の画像入力系統について、非同期に撮像タイミングが重なり又は時間的に近接し、複数の認識処理を行わなければならない場合に、先の側の認識処理のスケジューリングの余裕時間になるべく影響を与えずに後の側の認識処理を割り込ませていき、複数の画像入力系統に対して、効率的に認識処理を実行することができる。この効率的な認識処理については図１３の例により後述する。
【００３７】
［タスク構成］
次に、画像処理装置１９において、画像認識のために制御ＣＰＵ１１により実行されるプログラムのタスク構成を図６に示す。これにより、上記タスク構成について説明する。
図６に示すタスク構成は、主に、コマンド管理を行う「タスク割り当て手段」としてのコマンド受付タスク３４と、認識処理を行う三つの認識処理タスク３７〜３９と、サブルーチンモジュールである画像入力ＡＰＩ(Application Program Interface)３５と、タイマ割込みを処理するハンドラのボディ部であるタイマ処理４６と、撮像終了割り込みを処理するハンドラのボディ部である割込み処理３６とから成る。なお、認識処理タスクの個体数は、処理の数に応じて増減することが可能である。
また、図６の符号４５はコマンド管理ブロック、４７は画像入力ステータス管理ブロックを示している。
【００３８】
また、図６に示すタスク構成は、ＵＤＰ画像変換タスク５０とＵＤＰ画像認識タスク５１とを備えている。エンコーダパルスなどをトリガにして入力された同期信号により、画像データ３２がＵＤＰ変換タスク５０に取り込まれる。このときＵＤＰにより画像データ３２が、連続した複数のパケットにより送信されることを想定すると、ＵＤＰはハンドシェイクをしないため、ＵＤＰ変換タスク５０は連続した複数のパケットを取りこぼさないような配慮が必要となる。多数のパケットを取りこぼしてしまい、画像処理装置１９から不必要なパケット再送要求が頻発しないように、ＵＤＰ変換タスク５０はどの処理よりも最優先で実施されることが望ましい。
取り込みが完了するとＵＤＰ画像認識タスク５１を呼び出し、画像処理を実施後、認識結果を取得する。
【００３９】
［タスク構成：コマンド受付タスク］
図３のマシン制御装置１３から画像処理装置１９への撮像とその撮像画像の認識処理とを実行させる要求は図６に示すコマンド３０として通知される。
コマンド受付タスク３４は、コマンド３０を受信すると、コマンド管理ブロック４５を参照し、タスクのリソースを獲得して、受け付けたコマンドを登録する。
そして、獲得した認識処理タスク３７（又は３８又は３９）に対してコマンド３０を送信し、起床させる。そして、コマンド受付タスク３４は、次のコマンド待ち状態となる。
これにより、コマンド受付タスク３４は「前記複数の要求に対して認識処理タスクを割り当てるタスク割り当て手段」として機能し、当該機能の実行により「タスク割り当て工程」が実行される。
【００４０】
認識処理タスク３７（又は３８又は３９）はコマンドの内容を解析し、撮像要求部としての画像入力ＡＰＩ３５を呼び出し、画像撮像要求を行い、画像撮像が終了したら、ノンストップ部品認識４０、ストップ部品認識４１、ノンストップ基板マークＭ認識４８、ストップ基板マークＭ認識４９、メンテナンスコマンド４３、ティーチング４４の六つのカテゴリのコマンドモジュールの内、コマンド３０に該当するモジュールを呼び出して、コマンド処理を実行する。
【００４１】
また、それぞれのコマンド処理で図３の画像入力部１５の演算制御回路９を用いたハード演算処理を行うか否かを判定し、作業用メモリ１０（図３）内のコマンド管理ブロック４５に保持しておく。
ハード演算処理を行う場合、コマンド処理時間に対してするハード演算処理時間の推定値の割合であるハード演算占有率を同時に求めておいてもよい。コマンド処理時間、ハード演算処理時間の推定値、及びハード演算占有率は、同じく、作業用メモリ１０（図３）内のコマンド管理ブロック４５に保持しておく。
【００４２】
また、認識処理タスク３７〜３９の優先順位は、コマンド受付タスク３４に比べて低く設定されており、認識処理タスク３７の実行中に、次のコマンドを受信したならば、コマンド受付タスク３４が再び起床し、コマンド３０の受信、コマンド管理ブロック４５の参照、空きリソースの獲得及び受け付けたコマンドの登録が行われる。そして、獲得した認識処理タスク３８（又は３９）に対してコマンド３０を送信し、起床させる。コマンド受付タスク３４は、再び次のコマンド待ち状態となる。
【００４３】
［タスク構成：認識処理タスク］
図７は認識処理タスク３７〜３９が実行する処理種別毎の優先順位の一例を示す図表である。
認識処理タスク３７〜３９が実行する処理種別毎の優先順位は高、中、低の３レベルで段階的に定義され、処理種別と撮像方法の種類とによって優先順位が割り当てられている。優先順位のレベルや割り当てのルールは使用するＲＴＯＳ(real time operation system)の仕様、実装するアプリケーションの仕様に合わせて、自由に設定することができるが、ここでは、画像処理装置１９において採用されている一例を説明する。
【００４４】
この電子部品実装装置１００に搭載された画像処理装置１９においては、ノンストップ撮像で部品認識又はマーク認識処理を行う場合には、直ぐに次コマンドが投入されて、タイトな間隔での高速な処理が要求される場合が多いので優先順位を最も高い「高」としている。それに比べて、ヘッドが止まった状態で撮像を行うストップ撮像で部品認識又はマーク認識処理を行う場合は、ノンストップ撮像よりも時間的な余裕があるので優先順位を「中」としている。また、部品認識やマーク認識のように生産中のタクトが要求される処理ではないメンテナンスコマンドに関する処理は優先順位を「低」としている。
なお、優先順位が同じタスクが複数存在する場合には、処理が可能となった順番に実行される。例えば、ノンストップ撮像の場合には、対応する撮像が完了した順番でタスクが実行される。
【００４５】
図８に「撮像とその撮像画像の認識処理とを実行させる複数の要求」としての複数の撮像認識コマンドが入力され、当該各コマンドが登録されて実行可能状態となった認識処理タスク３７〜３９の管理方法を示す。
図７に示す優先順位の設定に従って、実行タスクの切り替えは、ＲＴＯＳの機能を用いて実現する。
各認識処理タスク３７〜３９は、いずれも、休止状態から実行可能状態に遷移すると、図８のような優先順位別のキューにつながれ、管理される。優先順位が同じタスクについては、基本的に先に実行可能状態になった順番につながれる。即ち、この画像処理装置１９の例では、撮像が終了した順番に応じてキューにつながれて、同じ優先順位の中での優先度がさらに定められる。
【００４６】
また図８に示す処理では、ＵＤＰ画像変換タスク５０による最優先処理を実行している。どの認識タスクよりも優先して、ＵＤＰ画像変換タスク５０を実行する。基本的にＵＤＰ画像変換タスク５０により画像が完成した順番にＵＤＰ画像認識タスク５１が呼び出され、実行可能状態になりキューにつながれる。
図８ではＵＤＰ画像認識タスク５１の優先順位を「高」とした場合を図示しているがこれに限らない。例えば、ノンストップ撮像による部品又はマーク認識タスクの優先順位「高」とＵＤＰ画像変換タスク５０の優先順位「最優先」との間に新たな優先順位を新規設定し、当該優先順位にＵＤＰ画像認識タスク５１のキューをつないで、他の認識タスクよりも高順位で処理を実施しても良い（図８では図示しない）。
【００４７】
但し、連続する複数の認識処理について搭載順序の指示がある場合は、キューへの挿入位置を制御し、同一優先順位のタスクについても、さらに細かな優先度を定めることができる。即ち、この搭載順序に基づく優先度は、図６のコマンド管理ブロック４５に予め登録され、認識処理タスク３７〜３９をキューに接続する際に参照して搭載順序を比較し、搭載順序に応じたキューへの挿入位置を判定してつなげるようにする。このようにすれば、持ち時間を効率的に使え、実装装置全体として効率よく処理を進めることができる。
【００４８】
また、コマンド管理ブロック４５（図６）に保持しておいたハード演算を行うか否かの情報は、認識処理タスク３７〜３９をキューに接続する際に参照して、ハード演算を行う認識処理タスクを先に実行するようキューへつなげることでハード演算中にその後ろの認識処理タスクの制御ＣＰＵ１１による処理を行えるようになり、そのまま後ろにつなげていた場合より、２つの認識処理タスクのトータル処理時間を短縮できる。また、同時にコマンド管理ブロック４５（図６）に保持しておいたハード演算占有率を用いて、ハード演算を行い且つハード演算占有率（認識処理内で演算制御回路９によるハード演算を行う比率）が高い認識処理タスクほど、優先度を高くしてキューに対する並び替えを行うことでよりきめ細かな制御が可能となる。
例えば、キューの順番入れ替えだけでなく、同一優先レベル内で優先度に差をつけることが可能となる。
これにより、上記制御ＣＰＵ１１は、「前記優先順位内での認識処理の優先度をさらに定め、認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を前記優先度に応じて並び替える優先度設定手段」として機能し、「前記実行可能キューへの認識処理タスクの接続順位を並び替える際に、認識処理タスクがハード演算を含むか否かを判定し、ハード演算を含み、前記演算処理部との並列処理が可能な認識処理タスクについて、ハード演算占有率が高いものほど優先度を高くして並び替える」処理を行う。また、これらを実行することにより、「優先度設定工程」が実行されることとなる。
そして、ＲＴＯＳは、ディスパッチ要求があると、最も優先順位の高く、その中でもキューの最も先頭につながれたタスク（例えば、図８における左上のタスク）を実行状態へと遷移させる。
【００４９】
ここで、基本的な動作パターンである一軸（一つのヘッドによる部品実装動作）でのノンストップ撮像時の動作のタイミングチャートを示す図９を参考にしつつ、認識処理タスク３７〜３９について説明する。
ノンストップ撮像における３つの撮像認識のコマンド要求が連続して投入されると、コマンド受付タスク３４はコマンド管理ブロック４５の参照、タスクのリソースの獲得、受け付けたコマンドの登録の処理を繰り返す（時刻ｔ１〜ｔ２）。
これにより、認識処理タスク３７、３８及び３９は、撮像認識コマンドを受信した順番に実行可能状態となり、それぞれのタスクの実行内容に基づく優先順位によって、実行状態となるタスクが決定することになる。いずれのタスクも優先順位が同じである場合には、基本的に先に実行可能状態となっているタスクが優先される。つまり、各認識処理タスク３７〜３９は、画像撮像が完了した順に処理されることになる。
【００５０】
ノンストップ撮像で連続的に複数の電子部品の認識が行われる場合、最初に搭載される電子部品の認識処理タスクについては、同一優先順位の実行可能タスクキューの先頭につながれて、最優先で処理されるが、実行可能タスクキューの先頭に接続されたタスクが既に実行中である場合には、その次に接続するようにすれば、現在実行中のタスクを中断することがなく、画像処理装置全体として効率よく処理を進めることができる。
【００５１】
また、認識処理タスク３７〜３９の優先順位は、リアルタイムに画像撮像が行えるよう、最初の画像撮像終了までは、すべての認識処理タスクに対して同様に、最も高い優先順位が設定される。これにより、認識処理タスク３７が画像撮像要求を出すと、最優先で撮像が開始され、他の処理が先に実行される事により撮像が遅れを生じるような事態を排除し、適正なタイミングで撮像が実行されることとなる。そして、先に実行状態となっていた認識処理タスク３７が画像撮像要求を出し（時刻ｔ２）、続いて認識処理タスク３８、３９の順で撮像要求を出すこととなる。
なお、上述のように各認識処理タスク３７〜３９について当初は最も高い優先順位が設定されるが、認識処理タスク３７の画像データが取得されると、処理種別及び撮像方法によって定められた優先順位に再設定される。このような優先順位の再設定は、カメラを複数使用する場合にも同様に行われる。即ち、制御ＣＰＵ１１は、「前記複数の要求に基づくそれぞれの撮像完了時に前記認識処理タスクの優先順位を設定又は更新する設定手段」として機能する。また、当該機能により「第一の設定工程」が実行される。
また、このように連続して画像撮像要求を出す場合、最初の撮像である第１画像データ撮像が行われると（時刻ｔ３〜ｔ４）、その終了時にのみ割込み通知要求を設定し（時刻ｔ４）、二番目以降の撮像終了時（時刻ｔ７，ｔ１０）についてはあえて割込み通知要求を設定しない。
【００５２】
画像撮像、画像データの転送など図３に示す画像入力部１５のハードウエアがサポートする機能を呼び出すためのモジュールとして設けたのが画像入力ＡＰＩ３５である。画像入力ＡＰＩ３５は、ハードウエア依存部分を隠蔽し、独立性の高いアプリケーションの実装を実現している。
画像入力ＡＰＩ３５での処理は、ハードウエアのキックとその返答待ちである。画像入力ＡＰＩ３５は、サブルーチンとして呼び出されるので、認識処理タスクとして動作する。
画像入力ＡＰＩ３５を呼び出した時点で既に画像撮像が終了していれば、そのまま処理は続行されるが、画像撮像を行う場合、認識処理タスクは画像撮像が終了するまでは、休止状態となる。
【００５３】
例えば、図９では、３つの認識処理タスクが撮像要求を出した後、すべてのタスクは撮像終了待ちとなっている。第１画像データ撮像が時刻ｔ４で終了すると、撮像通知割込み３３がかかり、割込み処理３６が実行される（時刻ｔ４）。割込み処理３６は、割込み要因を解析し、該当する画像の撮像終了（第１画像データ）を待っている認識処理タスク３７を起床する（時刻ｔ５）。
【００５４】
認識処理タスク３７は、画像データを取得し、認識処理に移行した時点で処理種別によって、適切な優先順位に動的に切り替えられる。
このタイミングでタスクのディスパッチ処理が動作し、複数の認識処理タスクが実行可能であった場合、優先順位の高いタスクに切り替わる。
図９の場合は、時刻ｔ５において、他に実行可能なタスクが存在しないので（認識処理タスク３８，３９は画像データを取得していないので）、これらの処理は行われず、そのまま、認識処理タスク３７が実行される。
一方、画像入力部１５は制御ＣＰＵ１１と並行処理が可能であるため、第２画像データ撮像処理が第１画像認識処理中に実行される（時刻ｔ６〜ｔ７）。
そして、認識処理結果を示すレスポンスが生成されたならば、コマンド受付タスク３４に送信され、図３の画像処理装置１９からマシン制御装置１３へとレスポンス３１が受け渡されることになる。
【００５５】
こうして、認識処理タスク３７が終了した時点で、同じ優先順位で、かつ第２画像データ撮像が終了している認識処理タスク３８に制御が移る（時刻ｔ８）。そして同様な処理を経て、第３画像データ撮像処理が第２画像認識処理中に実行される（時刻ｔ９〜ｔ１０）と共に、認識処理結果のレスポンスが返答され、認識処理タスク３８が終了したら（時刻ｔ１１）、認識処理タスク３９に制御が移る（時刻ｔ１１〜ｔ１２）。
これらの過程において、画像認識処理が次の画像データ撮像の完了より早く終了しない限り、第２画像データ、第３画像データの撮像終了時に撮像通知割込みは発生しないので、同じ優先順位のタスク間での遷移は起こらない。
【００５６】
この画像処理装置１９では、優先順位の高い認識処理は途中、極力、不用意な割り込み処理やシステムコールによるディスパッチ処理が発生しないようにタスク制御を行い、最速で画像認識の結果が得られるように考慮している。
また、図１１において後述するが、低優先順位のタスクが待ち時間の経過とともに優先順位を上げて、タイムアウトエラーを防止する仕組みとして、コマンド管理ブロック４５に登録された各コマンド別に、コマンド経過時間と待ち時間を管理するようにし、タイマ処理にて、時間の更新を行い、それぞれの時間を評価し、必要に応じて、優先順位の再設定、及びタスク切り替えのリクエストを発行する。
【００５７】
［認識処理タスクによる処理］
それでは、各タスクと処理モジュールの動作を順を追って説明する。図１０に認識処理タスク３７〜３９による処理のフローチャートを例示する。
認識処理タスク３７〜３９は、迅速に画像撮像を行えるように、ステップＳ１のコマンド解析とステップＳ２の画像撮像要求とについては、コマンド受付タスク３４に次いで高い優先順位で動作させる。
【００５８】
まず、コマンド解析では受け渡されたコマンド文字列を解析し、処理種別に応じた優先順位を取得する（ステップＳ１）。
演算処理部１８は、前述したように、処理種別毎の優先順位を予め定めて記憶しており（図７参照）、これが参照される。
【００５９】
次に、画像撮像要求の処理では、図６の画像入力ＡＰＩ３５の撮像開始Ｉ／Ｆを呼び出し、ハードウエアをキックする（ステップＳ２）。これにより、電子部品Ｃ又は基板マークＭの撮像が開始される。なお、これにより、画像入力ＡＰＩ３５は、「撮像とその撮像画像の認識処理とを実行させる複数の要求に応じて前記カメラに撮像させる撮像要求を行う撮像要求部」として機能し、当該機能が実行されることにより「撮像要求工程」が実行される。
そして、画像撮像ステータス取得の処理では、画像入力ＡＰＩ３５の撮像ステータスＩ／Ｆを呼び出す（ステップＳ３）。
そして、撮像完了の有無を判定し（ステップＳ４）、撮像が終了していない場合には撮像完了待ちとなり（ステップＳ５）、休止状態になる。また、撮像が終了した場合には、図６に示す割込み処理３６にて起床される。撮像完了の有無をチェック（ステップＳ４）で撮像が終了いれば、そのまま処理が続行される。
【００６０】
そうして、撮像完了の状態で認識処理タスクに制御が移ってきたら、タスク優先順位再設定（ステップＳ６）を行う。設定する優先順位はコマンド解析（ステップＳ１）で取得済みの値である。
即ち、制御ＣＰＵ１１は、「複数の要求に基づくそれぞれの撮像完了時に認識処理タスクの優先順位を設定又は更新する設定手段」としての処理を行う。
ここで一旦、タスク切り替え要求を出し（ステップＳ７）、続いて、認識処理を行い（ステップＳ８）、認識処理終了後再度、タスク切り替え要求を出す（ステップＳ９）。なお、ステップＳ１〜Ｓ９の処理は、カメラを複数使用する場合も基本的には同様である。そして、ステップＳ９の処理を行うことにより制御ＣＰＵ１１は、「前記認識処理タスクの認識終了毎に前記優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する進行管理手段」として機能し、「進行管理工程」を実行する。
また、タスク切り替え要求を行う（ステップＳ７、Ｓ９）際は、図６のコマンド管理ブロック４５を参照し、登録コマンドが自身のみであるとか、自身が最も高い優先順位であるとか、タスク切り替えが発生し得ない状況であることが明確な場合は、システムコールの呼び出しは行わないようにする。
【００６１】
［タイマ処理］
図６に示すタイマ処理４６について、図１１のフローチャートに基づいて説明する。このタイマ処理４６では、優先順位の低いことが原因でいつまでも順番が回ってこないタスクについて、その待ち時間が予め設定された時間を超過した場合に優先順位を高くする処理が行われる。
このタイマ処理４６は周期タイマハンドラに登録され、一定周期毎に呼び出される。例えば、この画像処理装置１９では、最初の認識処理タスク３７による処理が開始されると、それ以降1[ms]毎に呼び出されるものとする。
【００６２】
まず、図６のコマンド管理ブロック４５を参照し、実行中の認識処理タスクのＩＤを取得する（ステップＳ１１）。
次に、コマンド管理ブロック４５へのコマンド登録数の回数分だけ、ステップＳ１３〜Ｓ２０の工程のループ処理を行ったか否かを判定する（ステップＳ１２）。コマンド登録数の回数分の処理が完了した場合には、タイマ処理４６を終了する。
【００６３】
一方、コマンド登録数の回数分の処理を完了していない場合には、登録コマンドについて、割り付けられた認識処理タスク３７〜３９のタスクＩＤを取得する（ステップＳ１３）。
そして、ステップＳ１１で取得したＩＤと比較し、実行中か否かを判定する（ステップＳ１４）。
実行中でなければ、待ち時間を更新し（ステップＳ１５）、予め設定しておいた判定時間と更新された待ち時間とを比較し、さらにコマンドを受け付けてからの経過時間も考慮して優先順位再設定が必要か否かを判定する（ステップＳ１６）。
【００６４】
そして、コマンドを受け付けてからの経過時間が判定時間を超過しており、優先順位の再設定が必要な場合には、タスク優先順位の再設定を行う（ステップＳ１７）。
さらに、設定された優先順位をチェックし（ステップＳ１８）、再設定の結果、「高」まで優先順位が上がっていた場合には、そのタスクの緊急度が高くなっているものと判断し、この時点でタスク切り替え要求を出す（ステップＳ１９）。
最後に、カレントポジションを次エントリへ進めて（ステップＳ２０）、ループ先頭のステップＳ１２に戻る。
即ち、制御ＣＰＵ１１は、上記ステップＳ１３〜Ｓ１５の処理により、「撮像とその撮像画像の認識処理とを実行させる要求を受け付けてからの経過時間を計時する計時手段」として機能する。なお、この「計時手段」としての処理は、撮像完了からその撮像画像の認識処理の開始までの待ち時間を計時する構成としてもよい。
また、制御ＣＰＵ１１は、上記ステップＳ１６，Ｓ１７の処理により、「前記経過時間又は待ち時間が規定時間を超えると、前記撮像画像の認識処理の開始を待つ認識処理タスクの優先順位を上げるように再設定するタスク再設定手段」として機能する。
【００６５】
［２軸時のノンストップ撮像のタイミングチャート説明］
次に、二機のヘッド１０６により並行して電子部品Ｃの搭載を実行する場合にノンストップ撮像を行った場合の例について説明する。図１２は二軸時のノンストップ撮像のタイミングチャートを示している。
２つのヘッド１０６，１０６がそれぞれ３つの電子部品を保持しており、ほぼ同時に撮像が行われるよう、それぞれについてコマンド送信された場合の動きを記述している。図１２では一方のヘッド１０６をフロントヘッド、他方のヘッド１０６をリアヘッドと記述する。
【００６６】
まず、送信されたコマンドは、時刻ｔ１〜ｔ２、ｔ２〜ｔ３の間にコマンド受付タスク３４でリアルタイムで受け付けられ、認識処理タスク３７〜３９が割り当てられ、コマンド送信順に撮像要求が出される。すべての撮像要求に関する設定が終了したら、その旨をマシン制御装置１３に通知し、ヘッド１０６，１０６の移動が開始される。
各ヘッド１０６，１０６が部品用カメラ６，６の上を通過する時刻ｔ４のタイミングで、それぞれの画像撮像が行われる。画像入力部１５は、図３に示したように、２系統の入力回路３，３及び画像メモリ７，７を備えているので、それぞれの系統での同時撮像が可能となっている。また、画像入力部１５は、制御ＣＰＵ１１と独立したハードモジュールであるので、画像撮像と認識処理が並列で行うことができる。
【００６７】
この場合も、第１画像データ撮像が終了した場合のみ撮像通知割込みを出すよう設定されている（時刻ｔ４）。
そして、これら２系統の撮像は同時刻の時刻ｔ４〜ｔ５、ｔ７〜ｔ９、ｔ１０〜ｔ１２に実行される。
認識処理は、初回の撮像終了の時刻ｔ５の撮像通知割込みをトリガに開始される。
２軸なので認識処理タスクは計６つ用意され、それぞれ優先順位は同じである。
まずは、割込み通知のあったフロントヘッドの第１画像認識処理が実行される（時刻ｔ５）。この画像処理装置１９では、認識処理の終了時（時刻ｔ８）に、画像撮像状況を調べて、次に実行すべき認識処理タスクに制御を渡すようにする。
時刻ｔ８において、実行可能状態にあるのは、リアヘッドの第１画像認識処理のみであるのでこの処理が実行される。
その間、各ヘッド１０６，１０６の第２画像データ撮像が行われ（時刻ｔ７〜ｔ９）、リアヘッド１０６の第１画像の認識終了時の時刻ｔ１１では、フロント、リアの第２画像認識処理が実行可能状態になっている。図中では同時刻に画像撮像が終了しているが、先に待ちキューにつながれた方を優先して、フロントの第２画像認識処理（時刻ｔ１１〜ｔ１３）、リアの第２画像認識処理（時刻ｔ１３〜ｔ１４）の順で処理される。これらの間に、各ヘッド１０６，１０６の第３画像データ撮像が行われ（時刻ｔ１０〜ｔ１２）、リアの第２画像認識処理が終わると、フロントの第３画像認識処理（時刻ｔ１４〜ｔ１５）、リアの第３画像認識処理（時刻ｔ１５〜ｔ１６）の順で処理される。
【００６８】
図１３は二軸時のノンストップ撮像において、カメラ６における撮像時刻とカメラ６から各搭載位置までヘッド１０６が移動するための所要時間とが既知であるために、搭載時刻（各ヘッド１０６，１０６の各搭載点までの最短の到達時刻）が移動距離からの予測により既知となる場合のタイミングチャートを示している。
例えば、フロントヘッド、リアヘッド各処理で第２及び第３の部品の搭載時刻が時刻to13、to14、to15、to16であったとする。
図１２において、フロントヘッド、リアヘッド各処理で第２及び第３の部品の搭載可能な時刻は、時刻t13、t14、t15、t16であった。
【００６９】
フロントヘッドの第２及び第３部品の搭載可能な時刻t13、t15は搭載点への到達時刻より早いので問題ないが、リアヘッドの第２及び第３部品の搭載可能な時刻t14、t16においては、搭載点への搭載時刻to14、to16に対して遅延が発生してしまうことになる。
このように、画像データの撮像が完了した順に効率よく認識タスクを処理し、画像処理装置のトータル処理時間を最短で済むようスケジューリングしたとしても、電子部品実装装置としての効率は必ずしも良くはならない場合がある。
【００７０】
例えば、各部品の搭載時刻to13〜to16とともに、各部品の画像認識処理時間が分かっているならば、上記の事例においては、フロントヘッドの第２及び第３部品について、搭載点への搭載時刻to13〜to16に間に合う範囲で処理の開始を遅らし、それにより捻出できたＣＰＵ１１の余裕時間にリアヘッドの第２及び第３画像認識処理を割り当てて、時刻to14、to15に対して発生していた遅延を解消することができる。
各部品の搭載時刻to13〜to16は、コマンドパラメータとして、図３のマシン制御装置１３から受け渡されるものとする。搭載時刻to13〜to16は、それぞれのヘッドの第１画像データの撮像開始時刻を０とした相対時刻で表現される。これら搭載時刻to13〜to16はコマンド毎に図３の作業用メモリ１０内のコマンド管理ブロック４５（図６）に保持される。
【００７１】
各部品の画像認識処理時間は、部品の種別や端子数のデータから推定できる。これら各部品の画像認識処理時間は、前述したように、図３の作業用メモリ１０内のコマンド管理ブロック４５（図６）にコマンド処理時間の推定値として保持しておけるようになっている。例えば、予め画像認識処理時間を実測しておき、テーブル化して図３のマシン制御装置１３の記憶装置に保持しておいてもよい。画像処理装置１９の電源投入時に、マシン制御装置１３よりテーブル化データを受け渡し、図３の作業用メモリ１０内に展開しておく。図６のコマンド受付タスク３４は、コマンド受付毎にこのテーブル化データを参照し、該当する画像認識処理時間（コマンド処理時間の推定値）を取得し、コマンド管理ブロック４５内に保持しておく。以降、図３の制御ＣＰＵ１１は画像認識処理時間が必要となった場合に短時間で簡単に取得することができる。
【００７２】
また、このようなスケジューリングは、フロントヘッドとリアヘッドが非同期に動作している環境下において、複数の入力系統の要求（例えば、二つのヘッドによる認識処理の要求）が全く同時に発生することは稀であり、一度にスケジューリングをすべて完成させることはできない。まずは、先に発生した入力系統（例えば、先に要求が行われたヘッド）について、例えば前述した図１２に示すタイムチャートのように最短で処理が済むスケジューリングを作成し、新たに発生した入力系統（例えば、後に要求が行われたヘッド）について、最短での処理では搭載時刻を守れないことが明らかになった時点でリスケジューリングすべきである。
【００７３】
例えば、図１３に示すタイミングチャートにおいて、フロントヘッドの第１部品の撮像の方がリアヘッドの第１部品の撮像より若干早かった場合を考えてみる。
まず、フロントヘッドの第１の部品の撮像完了時t5にフロントヘッド側の認識処理のスケジューリングが完成する。このとき、リアヘッドでの認識処理が発生するかどうかはまだ分からないので、図１２に示すタイミングチャートのように画像撮像が完了した順にスケジューリングされることになる。その後、リアヘッドの第１の部品の撮像完了のイベントを受け取り（図ではt5となっているが厳密には若干t5よりも遅れる）、フロントヘッド、リアヘッドで並列して動作しなければならないことが分かる。
【００７４】
このときに、はじめて双方のヘッドの認識処理を同じ時間軸で並べて見ることができるようになるので、このイベントをリスケジューリングのタイミングとする。リスケジューリングの対象は未実行、すなわち、キューイングされている認識タスクである。
それぞれの認識タスクについて、画像認識処理時間と搭載時刻から処理の開始を遅延させることが可能な余裕時間を割り出す。
割り出された余裕時間分だけ処理の開始を遅延させた結果、他の認識タスクと処理が重なる場合には、搭載時刻からの遅延時間が最小になるようにキューの接続順序を入れ替え、さらに必要に応じて、２つのタスクについて同一優先順位のレベル内で優先度に差をつけるようにし、スケジュール制御を行う。
例えば、図１３の例では、フロントヘッドの第２及び第３画像処理について余裕時間分だけ処理の開始を遅延させるだけでは、リアヘッドの第２及び第３画像処理と処理が重なりを生じるが、フロントヘッドの第２画像処理とリアヘッドの第２画像処理、フロントヘッドの第３画像処理とリアヘッドの第３画像処理のそれぞれについて、キューの接続順序を入れ替え、同一優先レベル内で優先度に差をつけることにより処理の順番の入れ替えることにより、全ての画像処理が各々の搭載時刻までに終了し、ヘッドの待ち時間を解消又は低減することが可能となる。
【００７５】
制御ＣＰＵ１１は、上記スケジュール制御を行うことにより、「認識処理タスクの実行順を記憶する実行可能キューへの認識処理タスクの接続順位を並び替える接続順位補正手段」として機能し、「前記複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間及び前記複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻（搭載時刻）とに基づいて、前記複数の要求に基づくそれぞれの撮像画像の認識処理の遅延時間を求め、それぞれの前記遅延時間の合計が低減するように認識処理タスクを並び替える」処理を行う。また、上記処理により「接続順位補正工程」が実行される。
【００７６】
またさらに、余裕時間が短くて、その時間内では完全に処理を終えることができない場合、この余裕時間を有効に使うようにタスクのスイッチングを行う。まず、開始時刻が遅い方のタスク（以降、後のタスク）の優先度を開始時刻が早い方のタスク（以降、先のタスク）より高く設定しておく。後のタスクは、搭載時刻に間に合う時刻に起床するようアラームをかけておき、先のタスクを実行する。アラーム時刻になり、後のタスクが起床すると、こちらの方が優先度が高いので認識処理タスクが切り替わる。後のタスクの処理が終わると、再び先のタスクに切り替わる。タスクのスイッチングのため、画像処理装置のトータルの処理時間は増加するが、ヘッドの待ち時間は最短で済み、電子部品実装装置としての効率はＵｐする。
【００７７】
また、これらのリスケジューリング処理は、撮像完了イベントではなく、撮像露光のイベントを追加し、これをトリガにして動作させてもよい。
即ち、図１３に示すように、リアヘッドとフロントヘッドに対応する複数（二台）のカメラ６，６の中で最後の順番で連続撮像を行うカメラ（リアヘッド側）の連続撮像における最初の撮像（リアヘッドの第１画像データ撮像）の露光完了をトリガとして割込が発生し、認識処理タスクの並び替え（リスケジューリング）を実行する構成とすることが望ましい。なお、カメラ６を三台以上使用する場合には、２番目以降の順番で連続撮像を行うカメラの連続撮像における最初の撮像の露光完了をトリガとして割込が発生し、認識処理タスクの並び替え（リスケジューリング）を実行することが望ましい。
これにより、露光完了からデータ転送完了までの制御ＣＰＵ１１の待ち時間を有効活用でき、より速くリスケジューリングを終えることができる。
【００７８】
なお、図１３に示すように、フロントヘッド側の第１画像データ撮像における露光時にも割込が発生するが、この時点では、リアヘッド側における搭載時刻及び遅延の発生の有無が判断できないので、リスケジューリングは実行されない。
また、カメラが３台以上存在し、これらが連続的に撮像行う場合（より厳密には、撮像のタイミングが近いことにより各カメラの撮像画像データの認識処理がタイミング的に重合を生じる場合）には、最後に撮像を行うカメラの第１画像データ撮像における露光時にリスケジューリングを実行する。
【００７９】
［２軸でストップ撮像とノンストップ撮像とを実行するタイミングチャート説明（１）］
図１４は、低優先順位のストップ撮像コマンドとノンストップ撮像の重複時のタイミングチャートについて撮像方法・処理種別のみで優先順位の設定をした場合を示したものである。
例えば、フロントヘッド１０６が、３つの電子部品を保持しており、ノンストップ撮像を行うのとほぼ同時刻にリアヘッド１０６でストップ撮像コマンドが実行され、ストップ撮像の画像撮像終了の方が早く終了した場合の動きを記述している。
【００８０】
まず、送信されたコマンドは、時刻ｔ１〜ｔ２、ｔ２〜ｔ３の間にコマンド受付タスク３４でリアルタイムで受け付けられ、認識処理タスクが割り当てられ、コマンド送信順に撮像要求が出される。
フロントヘッド１０６については、ノンストップ撮像の要求であるので、３つの撮像要求に関する設定が終了したら、その旨をマシン制御装置１３に通知し、フロントヘッド１０６の移動が開始される。
リアヘッド１０６については、ストップ撮像の要求である。コマンド送信時には、ヘッド１０６は既に部品用カメラ６上に位置しているので、撮像要求に続いて、フロントヘッド１０６より早い時刻ｔ４で撮像が開始される。
一方、フロントヘッドの撮像は時刻ｔ４に遅れて時刻ｔ５〜ｔ８、ｔ１０〜ｔ１２、ｔ１３〜ｔ１５に実行される。
【００８１】
リアヘッド１０６における認識処理は、リアヘッド１０６の撮像終了の時刻ｔ６の撮像通知割込みをトリガに開始される。
認識処理タスクは計４つで、優先順位は、フロントヘッド１０６の３つが「高」、リアヘッド１０６の１つが「中」に設定されている。
また、この図１４の例のフロントヘッド１０６の画像認識処理は次の画像撮像終了よりも早く終了し、次の画像認識処理の開始までに空き時間が出来るような場合を事例としている。
【００８２】
時刻ｔ６では、実行可能状態の認識処理タスクはリアヘッド１０６の１つだけなので、時刻ｔ７からリアヘッド１０６の認識処理タスクが実行中となる。
その後、時刻ｔ８でフロントヘッド１０６の第１画像データ撮像が終了し、撮像通知割込みが入る。この時点でフロントヘッド１０６の第１画像認識処理タスクが実行可能状態となる。２つの実行可能状態の認識処理タスクで優先順位を比較し、実行タスクは、フロントヘッドの第１画像認識処理を行う認識処理タスクに切り替わる。
そして、第１画像認識処理の実行中に、第２画像データ撮像が時刻ｔ１０で開始され、時刻ｔ１１にフロントヘッドの第１画像認識処理は終了するが、この時点で、第２画像データの撮像は終了していない。そのため、実行可能なリアヘッドの認識処理タスクが再び実行タスクとなる。
【００８３】
ノンストップ撮像処理において、認識処理時に時間がかかり、認識処理終了時に既に次の認識処理の画像データが用意されている場合は、途中で撮像通知割込みは発生しない。
しかし、図１４に示すように、次の画像処理の画像データが間に合っていない場合（撮像が完了していない場合）には、前の認識処理の終了時、画像撮像状況をチェックした際に、次の認識処理の画像撮像について、撮像通知割込みの発生要求を立てておく。
すると、第２画像データ撮像終了の時刻ｔ１２に撮像通知割込みが発生し、実行タスクをリアヘッドの認識処理タスクからフロントヘッドの第２画像認識処理を行う認識処理タスクに切り替えることができる。
【００８４】
同様の仕組みで、フロントヘッドの第２画像認識処理タスクが終了する時刻ｔ１４で、タスク切り替えが起こり、リアヘッドの認識処理タスクが実行タスクとなる。そして、フロントヘッドの第３画像データ撮像が終了する時刻ｔ１５で撮像通知割込みが発生し、フロントヘッドの第３画像認識処理を行う認識処理タスクが実行タスクとなり、処理が終了する時刻ｔ１７でリアヘッドの認識処理タスクが唯一の実行可能状態のタスクとなるので、やっと制御が戻り、残りの処理を実行して時刻ｔ１８にすべての処理が終了となる。
このように優先順位が「中」の設定であると、他の認識処理タスクがすべて終了しないと処理の順番が回ってこない。
【００８５】
［２軸でストップ撮像とノンストップ撮像とを実行するタイミングチャート説明（２）］
図１５に待ち時間の累積時間により低優先順位のタスクの優先順位を動的に変動させるためのタイマ処理を組み込んだ場合のタイミングチャートを示す。この処理は、前述した図１４の処理に図１１に示したタイマ処理を組み込んだものであり、各ヘッド１０６，１０６の動作自体は図１４と同じである。
この図１５の処理は、時刻ｔ８〜ｔ１１の待ち時間の間に、周期的に実行されるタイマ処理が入ると、リアヘッド１０６の認識処理タスクに所定時間以上の待ち時間が生じている場合に、その優先順位が再設定され、「中」から「高」に切り替えられる。
【００８６】
これにより、フロントヘッド１０６の第１画像認識処理の終了時の時刻ｔ１１において、リアヘッド１０６の画像認識処理にタスク切替が行われる。
そして、このリアヘッド１０６の画像認識処理の終了時の時刻ｔ１４では、第２画像認識処理を実行する認識処理タスクが実行可能となっているので、当該認識処理タスクにタスク切り替えが行われる。
さらに、第２画像認識処理の終了時の時刻ｔ１６では、第３画像認識処理を実行する認識処理タスクが実行可能となっているので、当該認識処理タスクにタスク切り替えが行われる。
【００８７】
このように、優先順位「中」のタスクのレスポンス時間が、優先順位の繰り上げにより、短縮、改善される。
また、これに伴い、割込処理の発生頻度が低減して、全体の処理時間も短縮される。
なお、この処理では、一般的に実行される周期的に時間の経過を報知するタイマ処理に優先順位の更新機能を持たせているので、発明の課題である割込処理の低減の趣旨に反するものではない。
【００８８】
［１軸で搭載順序を考慮してノンストップ撮像とを実行するタイミングチャート説明］
図１６に１軸でノンストップ撮像を行う場合であって、三つの電子部品の搭載の順序を反映させて認識処理を実行する場合のタイミングチャートを示す。
このノンストップ撮像では、第３撮像画像の電子部品Ｃが最初に搭載され、第２撮像画像の電子部品Ｃが二番目に搭載され、第１撮像画像の電子部品Ｃが最後に搭載される場合の認識処理である。この場合、搭載に順番を反映すると、いずれも処理の優先順位は「高」であるが、その中でも、優先順位が、第３撮像画像＞第２撮像画像＞第１撮像画像となる。
ヘッド１０６の動作が図１１の例と同じように制御される場合に、上述の有せ印順位を適用すると、まず、撮像要求が行われ（時刻ｔ１〜ｔ２）、撮像の順番に従って第１画像データ撮像が行われる（時刻ｔ３〜ｔ４）。
撮像終了時には、撮像通知割込が入り、割込処理が行われる結果、処理が可能な状態である第１画像認識処理を実行する認識処理タスクの処理が開始される（時刻ｔ５）。
この時、第１画像認識処理の処理時間の長く、その実行中に第２画像データ撮像（時刻ｔ６〜ｔ７）と第３画像データ撮像（時刻ｔ８〜ｔ９）とが完了した場合、第３画像データ撮像の終了時の優先順位の更新において、第３画像認識処理の認識処理タスクが、タスクキューに対して、第２画像認識処理の認識処理タスクより前につながれた状態となる。
従って、第１画像認識処理が終了すると（時刻ｔ１０）、第３画像認識処理の認識処理タスクにタスクが切り替えられる。
さらに、第３画像認識処理が終了すると（時刻ｔ１１）、第２画像認識処理の認識処理タスクにタスクが切り替えられ、時刻ｔ１２で処理全体が終了する。
【００８９】
［発明の実施の形態における効果］
上記画像処理装置１９は、複数の撮像認識コマンドに基づいて撮像とその撮像画像の認識処理とを行う際に、撮像終了時に認識処理タスクの優先順位を更新し、認識処理タスクの認識終了毎に優先順位に従って、次に実行すべき認識処理タスクを選定し、当該次の認識処理タスクに移行する。
これにより、一の認識処理が終了したときに、次に実行可能に認識処理タスクが存在すれば割込処理を介することなく次に認識処理につなぐことができ、割り込み通知、タスク切り替えを最小限に止め、ＯＳのオーバーヘッド、キャッシュの入れ替え処理を削減することで、作業効率を向上することが可能となる。
【００９０】
また、画像処理装置１９では、処理種別にて認識処理タスクの優先順位を動的に切り替えることで、作業効率を向上できる。
さらに、処理待ち時間の経過に合わせて認識処理タスクの優先順位を上げることで、低優先順位の処理のタイムアウトを防止できる。
また、ノンストップ撮像する対象物について、撮像順に認識される場合に限らず、認識順を制御できるタスク管理手段を設けたことで、軸の搭載点までの移動時間を含めた範囲で効率良く、各部品の認識時間の配分ができ、システム全体として効率向上を図ることができる。なお、この場合、認識の順番を全ての電子部品Ｃについて搭載の順番に従わせる場合に限らず、一部の電子部品Ｃのみについて、例えば、最初に搭載が行われる電子部品のみについて認識を優先するというような補正を行うことも可能である。
また、認識の順番を全ての電子部品Ｃについて搭載の順番に従わせる場合には、よりきめ細かな認識順の制御が可能となり、理屈的には最後の搭載点までの移動時間をフルに使って、各部品の認識時間の配分ができ、システム全体として効率向上を図ることができる。
【００９１】
さらに、画像処理装置１９では、認識処理タスク３７〜３９がハード演算を含む場合に、そのハード演算占有率が高いものほど実行可能キューへの認識処理タスクの接続順位の優先度を高くするよう並び替える補正を行うことから、演算制御回路９によるハード演算によって得られる演算処理部１８の制御ＣＰＵ１１の空き時間を次の認識処理タスクが有効活用することができ、複数の認識処理のトータルでの処理時間をより短くすることが可能となる。
例えば、図１７は、図１２のリアヘッド第１画像認識処理がハード演算を含むように変わった場合のタイミングチャートを示している。
リアヘッド第１画像認識処理（ｔ８〜ｔ１３）に含まれるハード演算実行区間（ｔ１０〜ｔ１１）は、制御ＣＰＵ１１の空き時間となり、この時間（ｔ１０〜ｔ１１）にフロントヘッド第２認識処理を実行することができ、ｔ１８の終了時間をｔ１０〜ｔ１１の時間だけ短縮することが可能となる。
【００９２】
さらに、画像処理装置１９では、複数の要求に基づくそれぞれの撮像画像の認識処理に要する画像認識処理時間と複数の要求に基づくそれぞれの撮像画像の認識処理について目標とする画像認識処理終了時刻とが既知又は取得可能である場合に、各カメラ６，６の連続撮像を開始した時刻とそれぞれの撮像画像の認識処理に要する画像認識処理時間とから、個々の撮像画像の認識処理の終了時刻を算出することができる。そして、個々の撮像について、算出した画像認識処理の終了時刻と目標とする画像認識処理終了時刻と比較することで遅延の発生及び遅延時間を求めることが可能である。
上記複数のカメラ６，６による連続撮像を行った場合に、個々の撮像の何れかは目標とする画像認識処理終了時刻に対する余裕時間を生じる場合があるので（例えば図１３のフロントヘッドにおける第２及び第３画像認識処理）、余裕時間を生じる撮像の認識処理タスクと遅延を生じる撮像の認識処理タスク（例えば図１３のリアヘッドにおける第２及び第３画像認識処理）の接続順位をそれぞれ入れ替えることで、いずれの認識処理タスクも遅延を解消する場合がある。
【００９３】
このような入れ替えによって遅延を解消する認識処理タスクの組み合わせを適宜探索し、実行可能キューへの認識処理タスクの接続順位を並び替えることにより、個々の撮像の認識処理の遅延を低減又は解消し、複数のカメラの連続撮像の認識処理のトータルでの処理時間をより短くすることが可能となる。
特に上記のリスケジューリングでは、複数のカメラ６，６の中で最後の順番で連続撮像を行うカメラ６（リアヘッド側）の連続撮像における最初の撮像（第１画像データ撮像）の露光完了をトリガとして、遅延時間の合計を低減させるための認識処理タスクの並び替えを実行するので、撮像完了を待たずに並び替える認識処理タスクの組み合わせを探索する処理を開始することができ、認識処理のトータルでの処理時間をさらに短くすることが可能となる。
【符号の説明】
【００９４】
４  基板用カメラ
６  部品用カメラ
７  画像メモリ
１１  制御ＣＰＵ
１５  画像入力部
１８  演算処理部
１９  画像処理装置
３４  コマンド受付タスク（タスク割り当て手段）
３５  画像入力ＡＰＩ（撮像要求部）
３７〜３９  認識処理タスク
Ｃ  電子部品（対象物）
【図１】
2014178801.tif 000003
【図２】
2014178801.tif 000004
【図３】
2014178801.tif 000005
【図４】
2014178801.tif 000006
【図５】
2014178801.tif 000007
【図６】
2014178801.tif 000008
【図７】
2014178801.tif 000009
【図８】
2014178801.tif 000010
【図９】
2014178801.tif 000011
【図１０】
2014178801.tif 000012
【図１１】
2014178801.tif 000013
【図１２】
2014178801.tif 000014
【図１３】
2014178801.tif 000015
【図１４】
2014178801.tif 000016
【図１５】
2014178801.tif 000017
【図１６】
2014178801.tif 000018
【図１７】
2014178801.tif 000019
【図１８】
2014178801.tif 000020