(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-12-14
(45)【発行日】2023-12-22
(54)【発明の名称】画像処理装置、画像処理方法及び画像処理プログラム
(51)【国際特許分類】
G06T 1/60 20060101AFI20231215BHJP
【FI】
G06T1/60 450E
(21)【出願番号】P 2023544751
(86)(22)【出願日】2023-03-31
(86)【国際出願番号】 JP2023013484
【審査請求日】2023-07-25
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】岡部 亮
(72)【発明者】
【氏名】出口 昌弘
(72)【発明者】
【氏名】遠山 治
(72)【発明者】
【氏名】水口 武尚
【審査官】粕谷 満成
(56)【参考文献】
【文献】特開2019-4388(JP,A)
【文献】特開2009-156992(JP,A)
【文献】特開2004-193941(JP,A)
【文献】特開2013-3821(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/60
(57)【特許請求の範囲】
【請求項1】
位置決めの対象である位置決め対象物の撮像画像を分割して得られた複数の分割画像が格納された複数のペイロードパケットを受信するパケット受信部と、
前記複数のペイロードパケットから、
前記位置決め対象物の位置決めのための画像処理の対象となる分割画像
である位置決め分割画像が格納されたペイロードパケットを選択するパケット選択部とを有する画像処理装置。
【請求項2】
前記パケット選択部は、
前記複数のペイロードパケットのうち、選択したペイロードパケット以外のペイロードパケットを破棄する請求項1に記載の画像処理装置。
【請求項3】
前記位置決め対象物には特徴部分が存在し、
前記複数のペイロードパケットには、前記特徴部分が写された分割画像である特徴分割画像が格納されたペイロードパケットが含まれ、
前記パケット選択部は、
前記位置決め分割画像が格納されたペイロードパケットとして、前記特徴分割画像が格納されたペイロードパケットを選択する請求項
1に記載の画像処理装置。
【請求項4】
前記複数のペイロードパケットには、前記特徴部分の周囲の領域が写された分割画像である周囲分割画像が格納されたペイロードパケットが含まれ、
前記パケット選択部は、
前記位置決め分割画像が格納されたペイロードパケットとして、前記周囲分割画像が格納されたペイロードパケットを選択する請求項
3に記載の画像処理装置。
【請求項5】
前記画像処理装置は、更に、
前記パケット選択部によるペイロードパケットの選択に先立ち、前記位置決め分割画像が格納されたペイロードパケットを指定するパケット指定部を有し、
前記パケット選択部は、
前記パケット指定部により指定されたペイロードパケットを選択する請求項
1に記載の画像処理装置。
【請求項6】
前記位置決め対象物には特徴部分が存在し、
前記複数のペイロードパケットには、前記特徴部分が写された分割画像である特徴分割画像が格納されたペイロードパケットと、前記特徴部分の周囲の領域が写された分割画像である周囲分割画像が格納されたペイロードパケットとが含まれ、
前記パケット指定部は、
前記位置決め分割画像が格納されたペイロードパケットとして、前記特徴分割画像が格納されたペイロードパケットと前記周囲分割画像が格納されたペイロードパケットとを指定する請求項
5に記載の画像処理装置。
【請求項7】
前記パケット指定部は、
前記特徴部分の時刻t
0での位置と、前記時刻t
0から前記時刻t
0の後の時刻である時刻t
1までの間の前記位置決め対象物の移動量とに基づき予測された、前記特徴部分の前記時刻t
1での予測位置を取得し、
取得した前記特徴部分の前記時刻t
1での予測位置を用いて、前記位置決め対象物の前記時刻t
1での撮像画像を分割して得られる前記時刻t
1での複数の分割画像が格納された前記時刻t
1での複数のペイロードパケットのうち前記時刻t
1での位置決め分割画像が格納されたペイロードパケットを指定する請求項
6に記載の画像処理装置。
【請求項8】
前記パケット指定部は、
固定サイズの位置決め分割画像を用いる請求項
5に記載の画像処理装置。
【請求項9】
前記パケット受信部は、
前記撮像画像をラスタースキャン形式で分割して得られた複数の分割画像が格納された複数のペイロードパケットを受信する請求項1に記載の画像処理装置。
【請求項10】
コンピュータが、
位置決めの対象である位置決め対象物の撮像画像を分割して得られた複数の分割画像が格納された複数のペイロードパケットを受信し、
前記コンピュータが、前記複数のペイロードパケットから、
前記位置決め対象物の位置決めのための画像処理の対象となる分割画像
である位置決め分割画像が格納されたペイロードパケットを選択する画像処理方法。
【請求項11】
位置決めの対象である位置決め対象物の撮像画像を分割して得られた複数の分割画像が格納された複数のペイロードパケットを受信するパケット受信処理と、
前記複数のペイロードパケットから、
前記位置決め対象物の位置決めのための画像処理の対象となる分割画像
である位置決め分割画像が格納されたペイロードパケットを選択するパケット選択処理とをコンピュータに実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、画像処理に関する。
【背景技術】
【0002】
FA(ファクトリー・オートメーション)においては、サーボモータを用いて、ワーク等の位置決め対象物の位置(制御対象位置)を目標位置に合わせる技術(位置決め技術)が各種実用化されている。
制御対象位置を計測する方法として、カメラで撮像された撮像画像の画像処理により制御対象位置を計測する方法がある。画像処理により制御対象位置を計測する方法では、例えば、特許文献1に開示されているように、カメラが制御対象位置を含むように位置決め対象物を撮像する。そして、画像処理装置が、撮像画像を解析することで制御対象位置と目標位置との距離が算出される。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に代表される、従来の画像処理による位置決め技術では、画像処理装置内の画像処理を行う機能が撮像画像の全体を取得する。このため、従来の技術では、画像処理装置が撮像画像を受信する場合に、撮像画像の受信から画像処理を行う機能が撮像画像を取得するまでに長い時間がかかるという課題がある。
【0005】
本開示は、このような課題を解決することを主な目的とする。より具体的には、本開示は、撮像画像の受信から画像処理を行う機能が撮像画像を取得するまでの時間を短縮することを目的とする。
【課題を解決するための手段】
【0006】
本開示に係る画像処理装置は、
撮像画像を分割して得られた複数の分割画像が格納された複数のペイロードパケットを受信するパケット受信部と、
前記複数のペイロードパケットから、画像処理の対象となる分割画像が格納されたペイロードパケットを選択するパケット選択部とを有する。
【発明の効果】
【0007】
本開示によれば、撮像画像の受信から画像処理を行う機能が撮像画像を取得するまでの時間を短縮することができる。
【図面の簡単な説明】
【0008】
【
図1】実施の形態1に係る位置決めシステムの構成例を示す図。
【
図2】実施の形態1に係る撮像画像の送信方法を示す。
【
図3】実施の形態1に係る画像処理装置のハードウェア構成例を示す図。
【
図4】実施の形態1に係るモーションコントローラのハードウェア構成例を示す図。
【
図5】実施の形態1に係る画像処理装置とモーションコントローラの機能構成例を示す図。
【
図6】実施の形態1に係るフィルタテーブルの例を示す図。
【
図7】実施の形態1に係る位置決め利用領域の決定方法を説明する図。
【
図8】実施の形態1に係る破棄対象のパケットの決定方法を説明する図。
【
図9】実施の形態1に係る位置決めシステムの動作例を示すフローチャート。
【
図10】実施の形態1に係る画像処理装置の動作例を示す図。
【
図11】実施の形態1に係るパターン検出部の動作例を示すフローチャート。
【
図12】実施の形態1に係るモーションコントローラの動作例を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、実施の形態を図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【0010】
実施の形態1.
***構成の説明***
図1は、本実施の形態に係る位置決めシステム1の構成例を示す。
【0011】
図1において、位置決めシステム1では、画像処理によりワーク2の位置決めが行われる。
位置決めシステム1は、移動機構100と、カメラ200と、画像処理装置300と、モーションコントローラ400と、サーボドライバ500とを備える。
【0012】
ワーク2は、例えばプリント基板である。ワーク2には、位置決めに用いられる特徴部分3が存在する。特徴部分3は、例えば、実装済みチップ、未実装パターン、認識マーク等である。また、特徴部分3が、これらの組み合わせで構成されていてもよい。
ワーク2は、位置決めシステム1による位置決めの対象となるため、位置決め対象物に相当する。また、ワーク2はカメラ200による撮像の対象となるため、撮像対象物にも相当する。
【0013】
移動機構100は、ワーク2を移動させる。
移動機構100は、XYステージ110と、サーボモータ120aと、サーボモータ120bとを含む。
サーボモータ120aは、XYステージ110をX軸方向に沿って駆動する。サーボモータ120bは、XYステージ110をY軸方向に沿って駆動する。
移動機構100は、XYステージ110の代わりに、XYθステージを備えてもよい。
【0014】
カメラ200は、ワーク2を撮像する。そして、カメラ200は、撮像により得られた撮像画像を画像処理装置300に送信する。本実施の形態では、カメラ200は、Ethernet(登録商標)により撮像画像を画像処理装置300に送信するものとする。また、本実施の形態では、カメラ200は、GigE Vision規格を使用して画像処理装置300と通信する。GigE Visionは、産業用カメラ向けのインタフェース規格である。
【0015】
画像処理装置300は、カメラ200から撮像画像を受信する。また、画像処理装置300は、撮像画像に対して画像処理を行い、ワーク2上の特徴部分3の位置を特定する。そして、画像処理装置300は、特徴部分3の位置を特定することで、ワーク2の位置決めを行う。
なお、画像処理装置300の動作手順は、画像処理方法に相当する。また、画像処理装置300の動作を実現するプログラムは、画像処理プログラムに相当する。
【0016】
モーションコントローラ400は、画像処理装置300が特定した特徴部分3の位置に基づいて、ワーク2の位置を目標位置に近づけるための移動指令を生成する。そして、モーションコントローラ400は、生成した移動指令をサーボドライバ500に出力する。
【0017】
サーボドライバ500は、モーションコントローラ400から受け取る移動指令に基づいて、サーボモータ120a及びサーボモータ120bのフィードバック制御を行う。
【0018】
図2は、カメラ200が、撮像画像を複数のパケットに分割して送信する方法を示す。
【0019】
カメラ200によって撮像されたワーク2の撮像画像4は、ラスタースキャン形式で複数の分割画像に分割される。各分割画像のサイズは一定である。そして、複数の分割画像が複数のペイロードパケットP(1)~P(N)に格納される。そして、リーダーパケットP(0)、一つ以上のペイロードパケットP(1)~P(N)、トレイラーパケットP(N+1)の順に送信される。リーダーパケットP(0)は、撮像画像4についての先頭のパケットである。ペイロードパケットP(1)~P(N)の各々には分割画像が格納される。トレイラーパケットP(N+1)は撮像画像4についての終端のパケットである。リーダーパケットP(0)及びトレイラーパケットP(N+1)には分割画像は格納されない。
リーダーパケットP(0)、各ペイロードパケットP(1)~P(N)、トレイラーパケットP(N+1)には、撮像画像4の通し番号であるブロックIDと、撮像画像4内のパケットの通し番号であるパケットIDが付与される。ブロックIDは、撮像画像4ごとにインクリメントされる整数値である。
図2において、カメラ200は、撮像画像4に対してブロックIDとして「1」を割り当てている。パケットIDは、パケットごとにインクリメントされる整数値である。パケットIDは、撮像画像4ごとに「0」で初期化される。
図2において、カメラ200は、複数のパケットに対して、パケットIDとして「0」~「N+1」を順に割り当てている。
【0020】
図3は、画像処理装置300のハードウェア構成例を示す。
画像処理装置300はコンピュータである。
図3に示すように、画像処理装置300は、プロセッサ301、メモリ302、記憶装置303、ネットワークインタフェース304、モーションコントローラインタフェース305を備える。
【0021】
図4は、モーションコントローラ400のハードウェア構成例を示す。
モーションコントローラ400はコンピュータである。
図4に示すように、モーションコントローラ400は、プロセッサ401、メモリ402、記憶装置403、画像処理装置インタフェース404、サーボドライバインタフェース405を備える。
【0022】
図5は、画像処理装置300及びモーションコントローラ400の機能構成例を示す。
【0023】
Ethernet処理部310は、カメラ200が送信する分割画像をEthernet(登録商標)フレームの形式で受信する。そして、Ethernet処理部310は、ペイロードであるIP(Internet Protocol)パケットを、UDP/IP処理部320に入力する。
より詳細には、Ethernet処理部310は、
図2に示すペイロードパケットP(1)~P(N)のうち、ワーク2の位置決めのための画像処理の対象となる分割画像が格納されたペイロードパケットを選択する。そして、Ethernet処理部310は、選択したペイロードパケットをUDP/IP処理部320に転送する。Ethernet処理部310は、選択したペイロードパケット以外のペイロードパケットは破棄する。
Ethernet処理部310は、パケット受信部に相当する。また、Ethernet処理部310は、後述のパケット破棄部311とともにパケット選択部に相当する。また、Ethernet処理部310により行われる処理は、パケット受信処理に相当する。また、Ethernet処理部310により行われる処理は、パケット破棄部311により行われる処理とともにパケット選択処理に相当する。
【0024】
UDP/IP処理部320は、入力されたIPパケットからUDP(User Datagram Protocol)パケットを抽出する。そして、UDP/IP処理部320は、UDPパケットのペイロードであるGigE Visionパケットを、GigE Vision処理部330に入力する。
【0025】
GigE Vision処理部330は、一つ以上のGigE Visionパケットから、撮像画像4の一部である部分画像を構築する。GigE Vision処理部330が構築する部分画像は、後述する位置決め利用領域が写された画像である。GigE Vision処理部330は、部分画像をパターン検出部340に入力する。
GigE Vision処理部330は、
図2に示したブロックIDに基づいて、取得したGigE Visionパケットがどの撮像画像4を構成するものであるかを判別する。GigE Vision処理部330は、
図2に示したパケットIDが示す順序に従い、ペイロードパケットから部分画像を構築する。
【0026】
なお、単一のGigE Visionパケットのサイズは、単一のUDPパケットにおさまるサイズとする。単一のUDPパケットのサイズは、単一のIPパケットにおさまるサイズとする。単一のIPパケットのサイズは、単一のEthernetフレームにおさまるサイズとする。これらの条件を満たすために、ジャンボフレームを利用してもよい。
【0027】
パターン検出部340は、GigE Vision処理部330から入力された部分画像に対して画像処理を行う。そして、パターン検出部340は、ワーク2上の特徴部分3の位置を特定する。
パターン検出部340は、例えば、テンプレートマッチングによるピクセル単位検出処理により、特徴部分3の位置を特定する。パターン検出部340は、ピクセル単位検出処理の代わりに、もしくは、ピクセル単位検出処理に加えて、サブピクセル位置推定処理を行ってもよい。そして、パターン検出部340は、画像処理の結果(特徴部分の位置)をモーションコントローラ400に出力する。
パターン検出部340は、後述する画素範囲決定部341及び破棄パケット決定部331とともにパケット指定部に相当する。また、パターン検出部340により行われる処理は、後述する画素範囲決定部341及び破棄パケット決定部331により行われる処理とともにパケット指定処理に相当する。
【0028】
パケット破棄部311は、フィルタテーブル312を参照し、Ethernet処理部310が受信したペイロードパケットを破棄するべきか、UDP/IP処理部320に入力するべきかを決定する。
前述したように、パケット破棄部311は、Ethernet処理部310とともにパケット選択部に相当する。また、パケット破棄部311により行われる処理は、Ethernet処理部310により行われる処理とともにパケット選択処理に相当する。
【0029】
画素範囲決定部341は、将来の撮像タイミングで撮像される将来の撮像画像4における、位置決めに利用する画像領域(以下、位置決め利用領域という)を決定する。画素範囲決定部341は、後述する位置予測部420が予測した、将来の撮像タイミングにおける特徴部分3の位置に基づき、位置決め利用領域を決定する。
位置決め利用領域を構成する複数の分割画像の各々を位置決め分割画像という。前述したGigE Vision処理部330は複数の位置決め分割画像を組み合わせて位置決め利用領域が写された部分画像を構築する。位置決め利用領域の詳細は後述する。
前述したように、画素範囲決定部341は、パターン検出部340及び破棄パケット決定部331とともにパケット指定部に相当する。また、画素範囲決定部341により行われる処理は、パターン検出部340及び破棄パケット決定部331により行われる処理とともにパケット指定処理に相当する。
【0030】
破棄パケット決定部331は、破棄対象のペイロードパケットを決定する。具体的には、破棄パケット決定部331は、将来の撮像画像4に対応するブロックIDを算出する。また、破棄パケット決定部331は、将来の撮像画像4における位置決め利用領域に基づき、将来の撮像画像4についてのペイロードパケットのうち、位置決め分割画像が格納されないペイロードパケットのパケットIDを算出する。そして、破棄パケット決定部331は、算出結果をフィルタテーブル312に登録する。
換言すると、破棄パケット決定部331は、Ethernet処理部310による将来の撮像画像4についてのペイロードパケットの選択に先立ち、位置決め分割画像が格納されたペイロードパケットを指定する。
前述したように、破棄パケット決定部331は、パターン検出部340及び画素範囲決定部341とともにパケット指定部に相当する。また、破棄パケット決定部331により行われる処理は、パターン検出部340及び画素範囲決定部341により行われる処理とともにパケット指定処理に相当する。
【0031】
図5に示すEthernet処理部310、UDP/IP処理部320等の機能は、例えばプログラムで実現される。
図3に示す記憶装置303には、Ethernet処理部310、UDP/IP処理部320等の機能を実現するプログラムが記憶されている。
これらプログラムは、記憶装置303からメモリ302にロードされる。そして、プロセッサ301がこれらプログラムを実行して、Ethernet処理部310、UDP/IP処理部320等の動作を行う。
【0032】
モーションコントローラ400において、移動制御部410は、ワーク2の位置を目標位置に近づけるための移動指令を生成する。より具体的には、移動制御部410は、画像処理装置300が特定した特徴部分3の位置に基づいて、移動指令を生成する。
そして、移動制御部410は、生成した移動指令をサーボドライバ500に出力する。
【0033】
位置予測部420は、将来の撮像タイミングにおける特徴部分3の位置を予測する。より詳細には、位置予測部420は、パターン検出部340が特定した、特徴部分3の過去及び現在の位置に基づき、特徴部分3の位置を予測する。
そして、位置予測部420は、当該特徴部分3の予測位置を画素範囲決定部341に通知する。
【0034】
図5に示す移動制御部410及び位置予測部420の機能は、例えばプログラムで実現される。
図4に示す記憶装置403には、移動制御部410及び位置予測部420の機能を実現するプログラムが記憶されている。
これらプログラムは、記憶装置403からメモリ402にロードされる。そして、プロセッサ401がこれらプログラムを実行して、移動制御部410及び位置予測部420の動作を行う。
【0035】
【0036】
フィルタテーブル312は、メモリ302上に生成されるテーブルである。フィルタテーブル312は、Ethernet処理部310が将来破棄すべきペイロードパケットを特定するための情報を保持する。
図6のフィルタテーブル312には、将来破棄すべきペイロードパケットを特定するための情報として、ブロックIDとパケットIDの組が登録されている。
図6では、ブロックIDが「3」である撮像画像4の分割画像を格納する、破棄対象のペイロードパケットのパケットIDが示される。具体的には、パケットIDが「1」のペイロードパケットが破棄対象である。また、パケットIDが「2」のペイロードパケットが破棄対象である。更に、パケットIDが「33」のペイロードパケットが破棄対象である。また、パケットIDが「34」のペイロードパケットが破棄対象である。また、パケットIDが「35」のペイロードパケットが破棄対象である。
なお、
図6は、フィルタテーブル312をリングバッファにより構成している例を示す。フィルタテーブル312を、ブロックIDとパケットIDの組をキーとするハッシュセットあるいはハッシュマップにより構成してもよい。
【0037】
図7は、位置予測部420及び画素範囲決定部341が、位置決め利用領域5を決定する方法を示す。
【0038】
先ず、位置予測部420が、時刻t0において、将来の撮像タイミングである時刻t1(t1=t0+Δt)における特徴部分3の位置を予測する。
より具体的には、位置予測部420は、時刻t0おける特徴部分3の位置と、移動制御部410が生成した時刻t0における移動指令から求められる特徴部分3の予測移動量(時刻t0から時刻t1までの間のワーク2の移動量)とに基づき、時刻t1における特徴部分3の位置を予測する。
位置予測部420は、これらに加えて、特徴部分3の過去の位置情報から生成された減衰振動モデルを特徴部分3の位置の予測に利用してもよい。
【0039】
次に、画素範囲決定部341が、時刻t1で撮像される将来の撮像画像4での特徴部分3の全景及び特徴部分3の周囲の矩形領域を位置決め利用領域5として決定する。
特徴部分3の少なくとも一部が写されている分割画像を特徴分割画像という。本実施の形態では、1以上の特徴分割画像の組み合わせにより特徴部分3の全景が写されている画像が構成される。また、特徴部分3の周囲の矩形領域の少なくとも一部が写されている分割画像を周囲分割画像という。本実施の形態では、1以上の周囲分割画像の組み合わせにより周囲の矩形領域の全景が写されている画像が構成される。
1つの分割画像に特徴部分3の少なくとも一部と周囲の矩形領域の少なくとも一部とが写されている場合は、当該分割画像は特徴分割画像でもあり周囲分割画像でもある。
前述したように、位置決め領域を構成する複数の分割画像の各々を位置決め分割画像という。説明の簡明化のために、本実施の形態では、各位置決め分割画像は、特徴分割画像及び周囲分割画像のいずれかである。実際の運用では、位置決め分割画像が、前述した、特徴分割画像でもあり周囲分割画像でもある分割画像であってもよい。
【0040】
位置決め利用領域5のサイズは、特徴部分3の全景を完全に含むことができるサイズであれば、固定でも可変でもよい。
可変サイズの一例として、特徴部分3の位置の予測精度が低下する可能性がある場合に、位置決め利用領域5のサイズを大きくすることが考えられる。例えば、時刻t0から時刻t1にかけて、ワーク2の移動距離が大きいと予測される場合に、位置決め利用領域5のサイズを大きくすることが考えられる。また、時刻t0から時刻t1にかけて、ワーク2の振動幅が大きいと予測される場合に、位置決め利用領域5のサイズを大きくすることが考えられる。
【0041】
図8は、破棄パケット決定部331が破棄対象のパケットを決定する方法を説明する。つまり、
図8は、破棄パケット決定部331が、位置決め分割画像に該当しない分割画像が格納されるペイロードパケットのパケットIDを算出する方法を示す。換言すれば、
図8は、破棄パケット決定部331が、位置決め分割画像が格納されるペイロードパケットのパケットIDを算出する方法を示す。
【0042】
ここでは、現在時刻をt0[秒]、将来の撮像タイミングをt1(t1=t0+Δt)[秒]とする。また、フレームレートをf[fps]、現在時刻t0に撮像された撮像画像4のブロックIDをb0とする。
将来の時刻t1において撮像される将来の撮像画像4のブロックIDは、b1=b0+f[fps]×Δt[秒]で算出される。当該将来の撮像画像4を用いる位置決めでは、リーダーパケットと、トレイラーパケットと、位置決め利用領域5に対応する分割画像(位置決め分割画像)が格納されている全ペイロードパケットがパターン検出部340での画像処理の対象となる。換言すると、位置決め利用領域5に対応しない分割画像が格納されているペイロードパケットは破棄対象である。
ここでは、位置決め利用領域5のラスタースキャンによる先頭座標を(xi、yi)、末尾座標を(xj、yj)とする。また、将来の撮像画像4の分割画像が格納されるペイロードパケットのパケットIDをP(1)~P(N)とする。そして、位置決め利用領域5の先頭座標を含む分割画像が格納されるペイロードパケットのパケットIDをP(i)とする。また、位置決め利用領域5の末尾座標を含む分割画像が格納されるペイロードパケットのパケットIDをP(j)とする。この場合に、パケットIDがP(1)~P(i-1)であるペイロードパケットと、パケットIDがP(j+1)~P(N)であるペイロードパケットが破棄される。
【0043】
***動作の説明***
次に、本実施の形態に係る位置決めシステム1の動作例を説明する。
図9は、位置決めシステム1が、画像処理によりワーク2の位置決めを行う例を示す。
【0044】
先ず、ステップS100において、新たにワーク2が置かれた場合に処理がステップS200に進む。
【0045】
ステップS200では、カメラ200が、XYステージ110に置かれたワーク2を撮像するとともに、撮像時刻を記録する。カメラ200は、撮像周期ごとにステップS200のワーク2の撮像を実行する。
【0046】
次に、ステップS300において、カメラ200が、ステップS200で得られた撮像画像4と撮像時刻を画像処理装置300に送信する。カメラ200は、例えば、GigE Vision規格を使用して画像処理装置300と通信する。撮像時刻はリーダーパケットに格納される。撮像画像4から分割された複数の分割画像は一つ以上のペイロードパケットに格納される。そして、
図2に示したように、カメラ200から画像処理装置300にリーダーパケットとペイロードパケットとトレイラーパケットとが送信される。カメラ200は、次の撮像周期の開始時刻までに、ステップS300の送信を完了する。
【0047】
ステップS400において、画像処理装置300が、カメラ200から送信されたリーダーパケット、ペイロードパケット及びトレイラーパケットを受信し、分割画像及びその撮像時刻を取得する。そして、画像処理装置300は、画像処理を行い、ワーク2上の特徴部分3の現在位置を特定する。
【0048】
ステップS500において、画像処理装置300が、撮像時刻と、ステップS400で特定された特徴部分3の現在位置とを、モーションコントローラ400の移動制御部410と位置予測部420に通知する。
【0049】
なお、ステップS400及びステップS500で説明した、画像処理装置300の処理の詳細は後述する。
【0050】
ステップS600において、移動制御部410が、画像処理装置300が特定した特徴部分3の現在位置に基づいて、ワーク2の位置を目標位置に近づけるための移動指令を生成する。加えて、位置予測部420が、将来の撮像タイミングにおける特徴部分3の位置を予測する。
【0051】
ステップS700において、モーションコントローラ400の移動制御部410が、ステップS600で生成された移動指令をサーボドライバ500に通知する。加えて、モーションコントローラ400の位置予測部420が、ステップS600で算出された特徴部分3の予測位置を、画像処理装置300の画素範囲決定部341に通知する。
【0052】
なお、ステップS600及びステップS700で説明した、モーションコントローラ400の処理の詳細は後述する。
【0053】
ステップS800において、サーボドライバ500は、XYステージ110の移動量が移動指令に近づくように、サーボモータ120aとサーボモータ120bとに対してフィードバック制御を行う。そして、サーボモータ120aとサーボモータ120bが、XYステージ110を駆動することにより、ワーク2の位置が変更される。
【0054】
ステップS900に示すように、ステップS200からステップS800は、ワーク2が目標位置に移動するまで繰り返される。
【0055】
図10は、ステップS400及びステップS500の画像処理装置300の詳細な処理を説明する。
【0056】
画像処理装置300は、画像処理周期ごとに、
図10のステップS410からステップS440の処理を実行する。画像処理周期の長さは、撮像周期の長さと同一である。なお、画像処理周期の開始時刻は、撮像周期の開始時刻と同時である必要はない。
【0057】
図10において、Ethernet処理部310及びUDP/IP処理部320と、GigE Vision処理部330及びパターン検出部340とは、別々のCPU(Central Processing Unit)コアで動作する。したがって、Ethernet処理部310及びUDP/IP処理部320と、GigE Vision処理部330及びパターン検出部340とは、並列に動作する。
より詳細には、GigE Vision処理部330とパターン検出部340がブロックID=nの撮像画像4を処理している間、Ethernet処理部310とUDP/IP処理部320はブロックID=n+1の撮像画像4に対応するパケットの受信処理を行う。
【0058】
先ず、ステップS410において、Ethernet処理部310が、ネットワークインタフェース304に到着したEthernetフレームの中からUDP/IP処理部320にIPパケットを入力すべきEthernetフレームを選択する。
より具体的には、Ethernet処理部310は、パケット破棄部311を用いて、受信したEthernetフレームを破棄すべきかどうかを判定する。
パケット破棄部311は、受信したEthernetフレームのGigE Visionプロトコルのヘッダを参照する。そして、パケット破棄部311は、Ethernetフレームが持つブロックIDとパケットIDの組が、フィルタテーブル312に登録されたブロックIDとパケットIDの組と一致するか否かを判定する。
EthernetフレームのブロックIDとパケットIDの組が、フィルタテーブル312のブロックIDとパケットIDの組と一致する場合に、パケット破棄部311は、当該Ethernetフレームを破棄すべきと判定する。Ethernet処理部310は、パケット破棄部311が破棄すべきと判定したEthernetフレームを、UDP/IP処理部320に入力することなく破棄する。パケット破棄部311は、Ethernetフレームが破棄された後、フィルタテーブル312から、当該EthernetフレームのブロックIDとパケットIDの組を削除する。
一方、パケット破棄部311がEthernetフレームを破棄すべきと判定しなかった場合は、Ethernet処理部310は、当該EthernetフレームのペイロードのIPパケットをUDP/IP処理部320に入力する。つまり、Ethernet処理部310及びパケット破棄部311は、複数のIPパケットから、画像処理の対象となるIPパケットを選択する。
【0059】
次に、ステップS420において、UDP/IP処理部320が、入力されたIPパケットからUDPパケットを抽出する。更に、UDP/IP処理部320は、抽出したUDPパケットのペイロードからGigE Visionパケットを抽出する。
そして、UDP/IP処理部320は、抽出したGigE VisionパケットをGigE Vision処理部330に入力する。GigE Vision処理部330に入力されるGigE Visionパケットは、リーダーパケット、ペイロードパケット、トレイラーパケットのいずれかである。
【0060】
ステップS430において、GigE Vision処理部330が、リーダーパケットと、一つ以上のペイロードパケットと、トレイラーパケットとから、部分画像を構築する。GigE Vision処理部330が構築する部分画像は、位置決め利用領域5が写されている画像である。
GigE Vision処理部330は、共通のブロックIDを持つすべてのペイロードパケットに格納されている分割画像(位置決め分割画像)を、パケットIDが示す順序に従い結合することで、部分画像を構築する。部分画像の構築において、ペイロードパケットの一部がステップS410で破棄されていた場合は、GigE Vision処理部330は、当該破棄されたペイロードパケットに対応するメモリ領域への分割画像の格納をスキップする。この場合、当該メモリ領域には分割画像が格納されない。このため、当該メモリ領域では、当該メモリ領域に元々格納されていた値(初期値、不定値等)が維持される。
GigE Vision処理部330は、トレイラーパケットを受け取って部分画像の構築を完了すると、当該部分画像と、リーダーパケットから取得した撮像時刻と、当該部分画像のラスタースキャンによる先頭座標と末尾座標とを、パターン検出部340に入力する。
GigE Vision処理部330は、部分画像の先頭座標として、部分画像の先頭の分割画像の最初の画素の座標をパターン検出部340に入力する。また、GigE Vision処理部330は、部分画像の末尾座標として、部分画像の末尾の分割画像の最後の画素の座標をパターン検出部340に入力する。
部分画像の先頭座標は、
図8を用いて説明すると、パケットIDがP(i)であるペイロードパケットに格納された分割画像の最初の画素の座標(xk、yk)である。部分画像の末尾座標は、
図8を用いて説明すると、パケットIDがP(j)であるペイロードパケットに格納された分割画像の最後の画素の座標(xl、yl)である。
【0061】
図11は、ステップS440におけるパターン検出部340の動作例を示す。
【0062】
ステップS441において、パターン検出部340は、部分画像と、当該部分画像の撮像時刻と、当該部分画像の先頭座標と末尾座標とを、GigE Vision処理部330から入力される。
【0063】
次に、ステップS442において、パターン検出部340は、部分画像に対して画像処理を行い、ワーク2上の特徴部分3の現在位置を特定する。なお、パターン検出部340は、画像処理を効率的に行うために、部分画像外の領域の一部を含めて画像処理を行ってもよい。また、パターン検出部340は、部分画像の周囲にパディングを行って画像処理を行ってもよい。
【0064】
次に、ステップS443において、パターン検出部340は、モーションコントローラ400の移動制御部410及び位置予測部420に対して、特徴部分3の位置、及び、当該特徴部分3の位置を特定するのに用いた部分画像の撮像時刻を通知する。
【0065】
そして、ステップS444において、パターン検出部340から実行される画素範囲決定部341が、位置予測部420から、将来の撮像画像4における特徴部分3の予測位置を取得する。この際、画素範囲決定部341は、将来の撮像画像4を特定するための情報を取得してもよい。例えば、画素範囲決定部341は、将来の撮像画像4を特定するための情報として、今回の撮像画像4の撮像時刻と将来の撮像画像4の撮像時刻との差分Δtが示される情報を取得する。また、画素範囲決定部341は、将来の撮像画像4を特定するための情報として、今回の撮像画像4のブロックIDと将来の撮像画像4のブロックIDとの差分Nが示される情報を取得してもよい。
なお、
図10の例では、GigE Vision処理部330及びパターン検出部340がブロックID=nの撮像画像4の部分画像を処理している間に、Ethernet処理部310とUDP/IP処理部320はブロックID=n+1の撮像画像4が格納されたパケットの受信処理を既に開始している。
そのため、
図10の例では、位置予測部420は、ブロックID=nの撮像画像4の部分画像から、ブロックID=n+2の撮像画像4における特徴部分3の予測位置を算出する。つまり、今回の撮像画像4のブロックIDと将来の撮像画像4のブロックIDとの差分は2である。
【0066】
次に、ステップS445において、画素範囲決定部341が、ステップS444で取得した特徴部分3の予測位置に基づき、将来の撮像画像4における位置決め利用領域5を決定する。位置決め利用領域5の決定方法は、
図7を用いて説明した通りである。
前述のブロックID=nの撮像画像4が
図7の時刻t
0の撮像画像4に対応し、ブロックID=n+2の撮像画像4が
図7の時刻t
1の撮像画像4に対応する。
【0067】
ステップS446において、パターン検出部340により実行される破棄パケット決定部331が、破棄対象のパケットを決定する。具体的には、破棄パケット決定部331は、将来の撮像画像4に対応するブロックIDを算出する。また、破棄パケット決定部331は、将来の撮像画像4における位置決め利用領域5に基づき、将来の撮像画像4についてのペイロードパケットのうち、位置決め分割画像が格納されないペイロードパケットのパケットIDを算出する。そして、破棄パケット決定部331は、算出結果をフィルタテーブル312に登録する。
ブロックIDとパケットIDを算出する方法は、
図8を用いて説明した通りである。また、フィルタテーブル312への登録内容は、
図6を用いて説明した通りである。
【0068】
ステップS447に示すように、ステップS441からステップS446は、ワーク2が目標位置に移動するまで繰り返される。
【0069】
図12は、ステップS600及びステップS700のモーションコントローラ400の動作例を示す。
モーションコントローラ400は、演算周期ごとに、
図12のステップS601からステップS604を実行する。
【0070】
ステップS601で演算周期の開始時刻になると、ステップS602において、移動制御部410及び位置予測部420が、画像処理装置300が特定した特徴部分3の位置、及び、当該特徴部分3の位置を特定するのに用いた撮像画像4の撮像時刻を取得する。
【0071】
ステップS603では、移動制御部410が、画像処理装置300が特定した特徴部分3の位置に基づいて、ワーク2の位置を目標位置に近づけるための移動指令を生成する。
また、位置予測部420が、将来の撮像タイミングにおける特徴部分3の位置を予測する。
予測の方法は、
図7を用いて説明した通りである。
ここでは、今回の撮像時刻をt
0[秒]、将来の撮像タイミングをt
1(t
0+Δt)[秒]、フレームレートをf[fps]とする。今回の撮像画像4を基準としたN枚後の撮像画像4における予測位置を算出する場合は、Δtは、Δt[秒]=1/f×Nで表される。ここで、Nの値は、例えば、位置決めの開始前に画像処理装置300とモーションコントローラ400との間で決定しておく。また、これに代えて、位置決めの最中に画像処理装置300がモーションコントローラ400に都度Nの値を通知してもよい。
【0072】
ステップS604では、モーションコントローラ400の移動制御部410が、ステップS603で生成された移動指令をサーボドライバ500に通知する。
また、モーションコントローラ400の位置予測部420が、ステップS603で算出された特徴部分3の予測位置を、画像処理装置300の画素範囲決定部341に通知する。
位置予測部420が特徴部分3の予測位置を通知する際に、予測位置が将来のどの撮像画像4に対応するものであるかを示す情報を画素範囲決定部341に通知してもよい。このような情報として、位置予測部420は、例えば、前記のΔt、t0+Δt、Nのいずれかの値を通知する。
【0073】
ステップS605に示すように、ステップS601からステップS604は、ワーク2が目標位置に移動するまで繰り返される。
【0074】
***実施の形態の効果の説明***
本実施の形態では、位置予測部420が将来の撮像タイミングにおける特徴部分3の位置を予測する。そして、画素範囲決定部341が当該将来の撮像タイミングで撮像される撮像画像4における位置決め利用領域5を決定する。また、破棄パケット決定部331が位置決めに不要な将来のペイロードパケットを特定する。更に、パケット破棄部311が当該不要なペイロードパケットを破棄する。このため、本実施の形態によれば、Ethernet処理部310がネットワークで接続されたカメラ200からの撮像画像4を受信してからパターン検出部340が撮像画像4を取得するまでの時間を短縮することができる。これにより、位置決め対象物の位置決めを高速にすることができる。
加えて、UDP/IP処理部320に入力されるデータ量が削減されるため、ネットワーク受信処理で一般的に利用されるソケットバッファによるメモリ使用量を削減することができる。
更に、本実施の形態では、カメラ200がワーク2の全体を撮像及び送信し、画像処理装置300が撮像画像の不要な領域を破棄する。このため、特徴部分3以外の領域を対象とした画像処理を必要に応じて遅延なく開始することが可能である。これは、カメラ200がワーク2の一部のみを撮像することにより送信データ量を削減する従来の方法では得られない効果である。また、これは、カメラ200が撮像画像の一部(ROI:Region Of Interest)のみを送信することにより送信データ量を削減する従来の方法では得られない効果である。
【0075】
本実施の形態では、画像処理装置300とモーションコントローラ400を別々の装置としているが、これらを一つの装置としてもよい。これにより、移動制御部410と位置予測部420が、画素範囲決定部341と同じメモリ上で動作することができる。このため、将来の撮像タイミングで撮像される撮像画像4における位置決め利用領域5を、より高速に決定することができる。
【0076】
また、本実施の形態では、Ethernet処理部310及びUDP/IP処理部320と、GigE Vision処理部330及びパターン検出部340とが、別々のCPUコアで並列に動作することとしている。これに代えて、これらが単一のCPUコアで逐次的に動作してもよい。この場合は、GigE Vision処理部330及びパターン検出部340がブロックID=nの部分画像の処理を完了してから、Ethernet処理部310とUDP/IP処理部320がブロックID=n+1の撮像画像4についてのパケットの受信処理を行う。このため、位置予測部420は、ブロックID=nの部分画像から、ブロックID=n+1の撮像画像における特徴部分3の予測位置を算出する。つまり、現在の撮像画像4のブロックIDと将来の撮像画像4のブロックIDとの差分は1になる。
【0077】
また、本実施の形態では、位置決め利用領域5のサイズを可変でも固定でもよいとしている。位置決め利用領域5のサイズを可変にする場合は、Ethernet処理部310が撮像画像4を受信してからパターン検出部340が撮像画像4を取得するまでに掛かる平均の時間が短縮される。一方で、位置決め利用領域5のサイズを固定にすることは、画像処理装置300が破棄せずに処理するパケットの数に上限を設けることを意味する。したがって、位置決め利用領域5のサイズを固定にすると、Ethernet処理部310が撮像画像4を受信してからパターン検出部340が撮像画像4を取得するまでに掛かる最大時間が削減される。これにより、撮像周期をより短くすることができ、より高精度な位置決めを実現できるという効果がある。
【0078】
また、本実施の形態では、Ethernet処理部310が、位置決めのための画像処理に用いる分割画像が格納されたペイロードパケットを選択する例を説明した。位置決めに限らず、連続した複数の分割画像から特徴部分3の分割画像を抽出する用途にEthernet処理部310を用いることができる。
つまり、Ethernet処理部310は、位置決め対象物ではない、特徴部分3が存在する撮像対象物の撮像画像を分割して得られた複数の分割画像が格納された複数のペイロードパケットを受信することができる。そして、Ethernet処理部310は、複数のペイロードパケットから、画像処理の対象となる分割画像が格納されたペイロードパケットとして、特徴部分3が写された分割画像が格納されたペイロードパケットを選択することができる。
【0079】
なお、本実施の形態で説明した手順は一例である。
このため、本実施の形態で説明した手順の一部のみを実施しても構わない。
また、本実施の形態で説明した手順の少なくとも一部と、本実施の形態で説明していない手順とを組み合わせて実施しても構わない。
また、本実施の形態に記載された構成及び手順を必要に応じて変更してもよい。
【0080】
***ハードウェア構成の補足説明***
最後に、画像処理装置300とモーションコントローラ400のハードウェア構成の補足説明を行う。
【0081】
プロセッサ301は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ301は、CPU、DSP(Digital Signal Processor)等である。
メモリ302は、RAM(Random Access Memory)である。
記憶装置303は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
ネットワークインタフェース304、モーションコントローラインタフェース305は、それぞれ、データの通信処理を実行する電子回路である。
ネットワークインタフェース304、モーションコントローラインタフェース305は、それぞれ、例えば、通信チップ又はNIC(Network Interface Card)である。
【0082】
また、記憶装置303には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がプロセッサ301により実行される。
プロセッサ301はOSの少なくとも一部を実行しながら、Ethernet処理部310、UDP/IP処理部320等の機能を実現するプログラムを実行する。
プロセッサ301がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、Ethernet処理部310、UDP/IP処理部320等の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、メモリ302、記憶装置303、プロセッサ301内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、Ethernet処理部310、UDP/IP処理部320等の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、Ethernet処理部310、UDP/IP処理部320等の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
【0083】
プロセッサ401も、プロセッシングを行うICである。
プロセッサ401も、CPU、DSP等である。
メモリ402も、RAMである。
記憶装置403も、ROM、フラッシュメモリ、HDD等である。
画像処理装置インタフェース404、サーボドライバインタフェース405も、それぞれ、データの通信処理を実行する電子回路である。
画像処理装置インタフェース404、サーボドライバインタフェース405も、それぞれ、例えば、通信チップ又はNICである。
【0084】
また、記憶装置403にはOSも記憶されている。
そして、OSの少なくとも一部がプロセッサ401により実行される。
プロセッサ401はOSの少なくとも一部を実行しながら、移動制御部410及び位置予測部420の機能を実現するプログラムを実行する。
プロセッサ401がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、移動制御部410及び位置予測部420の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、メモリ402、記憶装置403、プロセッサ401内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、移動制御部410及び位置予測部420の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、移動制御部410及び位置予測部420の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
【0085】
また、Ethernet処理部310、UDP/IP処理部320等の少なくともいずれかの「部」を、「回路」又は「工程」又は「手順」又は「処理」又は「サーキットリー」に読み替えてもよい。移動制御部410及び位置予測部420についても、少なくともいずれかの「部」を、「回路」又は「工程」又は「手順」又は「処理」又は「サーキットリー」に読み替えてもよい。
また、画像処理装置300及びモーションコントローラ400は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)である。
この場合は、Ethernet処理部310、UDP/IP処理部320、パケット破棄部311等は、それぞれ処理回路の一部として実現される。移動制御部410及び位置予測部420も、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【符号の説明】
【0086】
1 位置決めシステム、2 ワーク、3 特徴部分、4 撮像画像、5 位置決め利用領域、100 移動機構、110 XYステージ、120a サーボモータ、120b サーボモータ、200 カメラ、300 画像処理装置、301 プロセッサ、302 メモリ、303 記憶装置、304 ネットワークインタフェース、305 モーションコントローラインタフェース、310 Ethernet処理部、311 パケット破棄部、312 フィルタテーブル、320 UDP/IP処理部、330 GigE Vision処理部、331 破棄パケット決定部、340 パターン検出部、341 画素範囲決定部、400 モーションコントローラ、401 プロセッサ、402 メモリ、403 記憶装置、404 画像処理装置インタフェース、405 サーボドライバインタフェース、410 移動制御部、420 位置予測部、500 サーボドライバ。
【要約】
Ethernet処理部(310)は、撮像画像を分割して得られた複数の分割画像が格納された複数のペイロードパケットを受信する。Ethernet処理部(310)及びパケット破棄部(311)は、複数のペイロードパケットから、画像処理の対象となる分割画像が格納されたペイロードパケットを選択する。