以下、本発明の検査システムおよび検査方法を、添付図面に示す好適な実施形態に基づいて、説明する。なお、以下で参照する各図は、本発明の説明のために用意された模式的な図である。図面に示された各構成要素の寸法(長さ、幅、厚さ等)は、必ずしも実際の寸法を反映したものではない。また、各図において、同一または対応する要素には、同じ参照番号が付されている。以下の説明において、各図のZ軸の正方向を「上側」といい、Z軸の負方向を「下側」ということがある。
最初に、図2~図9を参照して、本発明の検査システムを詳述する。図2は、本発明の検査システムを概略的に示すブロック図である。図3は、図2に示すロボット、カメラ、およびワークを示す斜視図である。図4は、図3中のカメラの周辺領域の拡大図である。図5は、ワークの作業前画像の一例を示す図である。図6は、図2に示す制御装置を概略的に示すブロック図である。図7は、特徴点ペアのリストから、信頼性の低い特徴点ペアを除外するための除外処理を説明するための図である。図8は、特徴点ペアのリストから、信頼性の低い特徴点ペアを除外するための別の除外処理を説明するための図である。図9は、作業前画像および作業後画像から差分画像を得るための処理を説明するための図である。
<検査システム100>
図2に概略的に示されている検査システム100は、ロボット1によって実行されるワーク3に対する作業の成否を判別するために用いられる。検査システム100は、ロボット1と、カメラ2と、ロボット1のワークテーブル11上に載置されたワーク3と、ロボット1およびカメラ2の制御を行うための制御装置4と、を含んでいる。
ロボット1は、ワークテーブル11上に載置されたワーク3に対して、部品の取り付け、塗布や切削等の加工等の所定の作業を行う機能を有している。典型的には、ロボット1は、ワーク3(例えば、回路基板や精密部品)に対して精密作業を行い、プロダクトまたは仕掛品を得るための産業用ロボットである。ロボット1は、ワークテーブル11と、ワークテーブル11上に載置されたワーク3に対する作業を実行するための作業部12と、ワークテーブル11上に載置されたワーク3と作業部12との相対位置を変化させるための可動部13と、を備えている。
図3に示されているように、ワークテーブル11は、平板状の部材であり、その上に作業部12によって作業が施されるワーク3が載置される。作業部12は、ワークテーブル11上に載置されたワーク3に対して所定の作業を実行するために用いられる。ワーク3に対して実行すべき作業の内容に応じて、様々なツールを、作業部12として用いることができる。例えば、ワーク3に対して熱硬化性樹脂等の接着剤の塗布を行う場合には、ノズルを作業部12として用いることができ、ワーク3に対して部品の組み付けを行う場合には、ピックアップハンドを作業部12として用いることができる。
作業部12は、図示しない配線によって制御装置4に接続されており、制御装置4からの制御に応じて、所定の動作を実行する。例えば、作業部12がノズルである場合には、作業部12は、制御装置4からの制御に応じて、ノズル内部に充填された液体材料(例えば、熱硬化性樹脂等の接着剤)をワーク3に対して塗布する動作を実行する。以下、作業部12は、制御装置4からの制御に応じて、液体材料をワーク3の1つ以上のワークポイント32(作業対象点、図5参照)に対して塗布するためのノズルであるとして説明を提供するが、上述のように作業部12はノズルに限られない点に留意されたい。制御装置4からの制御に応じて、可動部13が駆動され、作業部12とワークテーブル11上に載置されたワーク3との相対位置が調整された後、制御装置4は、作業部12に対して制御信号を送信し、作業部12は、ワーク3に対して自身の内部に充填された液体材料を、ワーク3のワークポイント32のいずれか1つに対して吐出する。
可動部13は、ロボット1の土台として機能するベース131と、ベース131の上方にベース131の上面とは離間して設けられたX軸可動部13Xと、ベース131の上面上に設けられたY軸可動部13Yと、X軸可動部13Xに取り付けられたZ軸可動部13Zと、を備えている。
X軸可動部13Xは、図示しない配線によって制御装置4に接続されており、制御装置4からの制御に応じて、X軸ステージ133Xを、図3中のX軸方向に沿ってスライド移動させる機能を有している。X軸可動部13Xは、ベース131のX軸方向の両端側にそれぞれ立設するよう設けられた一対の脚部131Xと、ベース131の上面から離間し、一対の脚部131Xの間を架橋するよう設けられ、図中のX軸に沿って延伸するX軸レール132Xと、X軸レール132X上をスライド移動可能に設けられた箱形のX軸ステージ133Xと、X軸ステージ133Xをスライド移動させるためのステッピングモーター等のX軸アクチュエーター(図示せず)と、を備えている。制御装置4からX軸アクチュエーターに制御信号が送信されると、X軸アクチュエーターが制御信号に応じて駆動し、X軸ステージ133Xを、X軸レール132X上でスライド移動させる。
Y軸可動部13Yは、図示しない配線によって制御装置4に接続されており、制御装置4からの制御に応じて、Y軸ステージ132Yを、図3中のY軸方向に沿ってスライド移動させる機能を有している。Y軸可動部13Yは、ベース131の上面上に設けられ、図中のY軸に沿って延伸するY軸レール131Yと、Y軸レール131Y上をスライド移動可能に設けられた平板状のY軸ステージ132Yと、Y軸ステージ132Yをスライド移動させるためのステッピングモーター等のY軸アクチュエーター(図示せず)と、を備えている。制御装置4からY軸アクチュエーターに制御信号が送信されると、Y軸アクチュエーターが制御信号に応じて駆動し、Y軸ステージ132YをY軸レール131Y上でスライド移動させる。また、図3に示されているように、ワークテーブル11の面およびY軸ステージ132Yの面は、図中のXY平面と一致している。また、ロボット1のワークテーブル11が、Y軸ステージ132Y上に固定されている。
Z軸可動部13Zは、図示しない配線によって制御装置4に接続されており、制御装置4からの制御に応じて、Z軸ステージ131Zを、図3中のZ軸方向に沿ってスライド移動させる機能を有している。Z軸可動部13Zは、X軸可動部13XのX軸ステージ133X上に設けられた平板状のZ軸ステージ131Zと、Z軸ステージ131Zをスライド移動させるためのステッピングモーター等のZ軸アクチュエーター(図示せず)と、を備えている。制御装置4からZ軸アクチュエーターに制御信号が送信されると、Z軸アクチュエーターが制御信号に応じて駆動し、Z軸ステージ131ZをX軸ステージ133X上で、Z軸方向に沿ってスライド移動させる。また、図3に示されているように、Z軸ステージ131Zの面方向は、図中のXZ平面と一致している。また、作業部12およびカメラ2が、固定具によって、Z軸ステージ131Zの面上に固定されている。
このように図示の形態では、ワークテーブル11は、Y軸可動部13YのY軸ステージ132Y上に取り付けられている。一方、Z軸可動部13ZのZ軸ステージ131Zは、X軸可動部13XのX軸ステージ133Xに取り付けられており、さらに、作業部12およびカメラ2が、Z軸ステージ131Zに取り付けられている。したがって、制御装置4は、可動部13のX軸可動部13X、Y軸可動部13Y、およびZ軸可動部13Zを駆動することにより、作業部12とワークテーブル11上に載置されたワーク3との相対位置を変更することができる。なお、制御装置4によって、ロボット1のX軸可動部13X、Y軸可動部13Y、およびZ軸可動部13Zが駆動されていない初期状態の作業部12およびカメラ2の位置を初期位置という。
カメラ2は、ワークテーブル11の上方において、ワークテーブル11上に載置されたワーク3を撮影可能に設けられた任意の撮像デバイスである。図3に示されているように、カメラ2は、可動部13のZ軸可動部13ZのZ軸ステージ131Zに取り付けられている。カメラ2は、図示しない配線によって制御装置4に接続されており、作業部12とワークテーブル11を含むカメラ画像をリアルタイムで取得し、取得したカメラ画像を制御装置4に送信する。制御装置4は、カメラ2から送信されたカメラ画像を参照することにより、作業部12とワークテーブル11上に載置されたワーク3との相対位置をリアルタイムで確認することができる。したがって、カメラ2は、作業部12とワークテーブル11上に載置されたワーク3との相対位置を観察するための視覚センサーとして機能する。
図4は、図3中のカメラ2の周辺領域の拡大図を示している。なお、図4中においてカメラ2の先端から下方に向けて放射状に延伸する点線は、カメラ2の視野を表現している。図4に示されているように、カメラ2は、カメラ2の視野内に常に、ワーク3に対する作業を実行する作業部12の先端部121が位置するような向きおよび位置で、Z軸ステージ131Zに取り付けられている。このように、カメラ2および作業部12の双方がZ軸ステージ131Zに取り付けられているため、カメラ2と作業部12との相対位置は常に一定である。また、作業部12の先端部121は、作業部12がノズルである場合には、液滴を吐出するノズル先端であり、作業部12がピックアップハンドである場合には、ワーク3を把持するハンド先端部である。
このような構成により、ロボット1がワーク3に対する作業を実行する際にカメラ2によってリアルタイムで取得されるカメラ画像は、作業部12の先端部121とワークテーブル11上のワーク3を常に含んでいる。そのため、制御装置4は、カメラ画像を参照することにより、作業部12とワークテーブル11上に載置されたワーク3との相対位置をリアルタイムで直接確認することができ、作業部12とワークテーブル11上に載置されたワーク3との相対位置の制御をより正確に実行することができる。
また、後述するように、本発明の検査システム100では、カメラ2は、ロボット1によるワーク3に対する作業が実行される前にワーク3を撮影することにより、ワーク3の作業前画像を取得し、さらに、ロボット1によるワーク3に対する作業が実行された後にワーク3を撮影することにより、ワーク3の作業後画像を取得するよう、制御装置4によって制御される。カメラ2によって取得されるワーク3の作業前画像および作業後画像は、ロボット1がワーク3に対する作業の成否を判別するための検査に利用される。
なお、カメラ2は、可動部13のZ軸可動部13ZのZ軸ステージ131Zに取り付けられているので、作業部12によるワーク3に対する作業を実行するために、制御装置4が可動部13のX軸可動部13XおよびZ軸可動部13Zを駆動し、ワーク3と作業部12との相対位置を変化させた際には、カメラ2とワーク3との相対位置も変化する。このように、本発明の検査システム100において、ワークテーブル11上に載置されたワーク3に対するカメラ2の姿勢および向きは一定ではない。そのため、ロボット1によるワーク3に対する作業を実行した後に、制御装置4がロボット1の可動部13を駆動させ、作業部12およびカメラ2を初期位置に戻したとしても、可動部13の制御分解能や作業中におけるワーク3の作業中の位置ズレや傾き等の複数の要因によって、ワーク3に対するカメラ2の姿勢や向きは、作業部12によるワーク3に対する作業を実行する前とは異なってしまう。そのため、ロボット1によるワーク3に対する作業が実行される前に取得されるワーク3の作業前画像の変形と、ロボット1によるワーク3に対する作業が実行された後に取得されるワーク3の作業後画像の変形とが異なっている。後述するように、本発明の検査システム100は、このようなワーク3の作業前画像および作業後画像の変形が互いに異なっていたとしても、ワーク3の作業前画像および作業後画像の位置合わせを正確に実行することができるよう構成されている。
図5は、ワーク3の作業前画像の一例を示している。図5に示されている例では、ワーク3は、ロボット1の作業部12によって接着剤等の液体材料が塗布される精密部品である。ワーク3は、作業前画像と作業後画像との位置合わせのための画像補正処理を実行するための特徴点として利用可能な複数(図示の例では、4つ)の基準マーカー31と、接着剤等の液体材料が塗布される1つ以上のワークポイント32と、を含んでいる。
複数の基準マーカー31は、作業前画像と作業後画像との位置合わせを行うために作業前画像および作業後画像の少なくとも一方に対して実行される画像補正処理において、作業前画像と作業後画像との位置合わせのための特徴点として利用可能な部分である。図示の形態において、複数の基準マーカー31のそれぞれは、カメラ2によって取得される作業前画像と作業後画像内において高いコントラストで表示されるよう、ワーク3の上面に形成された黒点である。後述するように、作業前画像と作業後画像との位置合わせのために実行される画像補正処理を実行するためには、作業前画像内の複数の特徴点と、作業後画像内の対応する複数の特徴点とを、特定する必要がある。作業前画像および作業後画像内の特徴点としては、典型的には、ワーク3のエッジ部分、特に四隅のエッジ部分が利用されるが、カメラ2の撮影条件等によっては、ワーク3のエッジ部分が作業前画像および作業後画像内に鮮明に表示されていない場合が発生し得る。このような場合、作業前画像と作業後画像内において高いコントラストで表示される複数の基準マーカー31が、作業前画像および作業後画像内の特徴点として利用されることが好ましい。後述するように、本発明の検査システム100においては、作業前画像内における複数の特徴点の位置と、作業後画像内における対応する複数の特徴点の位置とがそれぞれ一致するよう、作業前画像および作業後画像の少なくとも一方に対して画像補正処理が実行される。
ワーク3の作業前画像および作業後画像の変形が互いに異なっている場合、従来技術の欄において述べたような、ワーク3の作業前画像および作業後画像の少なくとも一方に対するXY方向の位置補正を行うと、作業前画像内における任意の1つの特徴点の位置と、作業後画像内における対応する1つの特徴点の位置とを一致させることができるが、作業前画像内におけるその他の複数の特徴点の位置と、作業後画像内における対応する複数の特徴点の位置とを一致させることはできない。本発明の検査システム100においては、ワーク3の作業前画像および作業後画像の変形が互いに異なっていたとしても、作業前画像内における複数の特徴点の位置と、作業後画像内における対応する複数の特徴点の位置とがそれぞれ一致するよう、作業前画像および作業後画像の少なくとも一方に対して画像補正処理が実行される。
1つ以上のワークポイント32は、ロボット1の作業部12による作業が実行されるべき箇所である。図示の例では、6つのワークポイント32のそれぞれに、作業部12によって、所定の量の液体材料が塗布される。ワークポイント32の数と位置は事前に設定されており、制御装置4は、カメラ2によって取得されるカメラ画像を参照することにより、複数のワークポイント32のそれぞれの位置を特定することができる。例えば、制御装置4は、既知のパターン認識アルゴリズム等の任意の対象認識技術を用いてカメラ画像内の任意の基準マーカー31の位置を特定し、特定された基準マーカー31と事前に設定された位置関係にある領域をワークポイント32として特定することができる。
図6には、制御装置4のブロック図が示されている。制御装置4は、ロボット1の各コンポーネント(具体的には、作業部12および可動部13)およびカメラ2に接続されている。制御装置4は、ロボット1の各コンポーネントおよびカメラ2を制御する機能を有している。制御装置4は、単体のデバイスとして実施されていてもよいし、デスクトップコンピューター、ラップトップコンピューター、ノートパソコン、ワークステーション、タブレット型コンピューター、携帯電話、スマートフォン、PDA、ウェアラブル端末、サーバー等の任意の演算デバイス内において実施されていてもよい。
図6に示されているように、制御装置4は、制御装置4の動作を実行するための1つ以上のプロセッサー41と、制御装置4への入力および制御装置4からの出力を実行するためのI/O(インプット/アウトプット)インターフェース42と、制御装置4の処理を実行するために用いられるデータ44およびモジュール45を保存している1つ以上のメモリー43と、を備えている。
1つ以上のプロセッサー41は、1つ以上のマイクロプロセッサー、マイクロコンピューター、マイクロコントローラー、デジタル信号プロセッサー(DSP)、中央演算処理装置(CPU)、メモリーコントロールユニット(MCU)、画像処理用演算処理装置(GPU)、状態機械、論理回路、特定用途向け集積回路(ASIC)、またはこれらの組み合わせ等のコンピューター可読命令に基づいて信号操作等の演算処理を実行する演算ユニットである。特に、プロセッサー41は、メモリー43内に保存されているコンピューター可読命令(例えば、データ、プログラム、モジュール等)をフェッチし、演算、信号操作および制御を実行するよう構成されている。
I/Oインターフェース42は、ウェブインターフェース、グラフィカルユーザーインターフェース(GUI)等の様々なソフトウェアインターフェースおよびハードウェアインターフェースを含む。例えば、I/Oインターフェース42は、キーボード、マウス、タッチパネルディスプレイ、外部メモリー、プリンター、ディスプレイのような周辺デバイスのためのインターフェースである。I/Oインターフェース42は、キーボード、マウス、タッチパネルディスプレイのような入力デバイスを用いた制御装置4への入力およびディスプレイ、プリンター、外部メモリー等の外部デバイスへの制御装置4からの出力を可能とする。また、I/Oインターフェース42は、制御装置4が、インターネット等のネットワークを介して、外部に設けられたウェブサーバーやデータサーバーのような任意の外部デバイスと通信を行うことを可能としてもよい。
メモリー43は、揮発性記憶媒体(例えば、RAM、SRAM、DRAM)、不揮発性記憶媒体(例えば、ROM、EPROM、EEPROM、フラッシュメモリー、ハードディスク、ソリッドステートドライブ、SDカード、光ディスク、CD-ROM、デジタル多用途ディスク(DVD)、ブルーレイディスク、磁気カセット、磁気テープ、磁気ディスク)、またはこれらの組み合わせを含むコンピューター可読媒体である。
メモリー43は、プロセッサー41と通信可能に接続されており、プロセッサー41により実行可能な複数のモジュール45、および、複数のモジュール45による処理に必要なデータ44を保存している。また、メモリー43は、複数のモジュール45の1つ以上によって受信、処理、生成されたデータや、複数のモジュール45による処理を実行するために必要なデータを一時保存する機能を備えている。
データ44は、ワーク3の作業前画像および作業後画像のそれぞれから、ロボット1のワーク3に対する作業の成否を判別するために必要な検査領域を切り出すための検査領域情報441と、ワーク3の作業前画像と作業後画像との差分を抽出することにより得られた差分画像に基づいて、ワーク3に対する作業の成否を判別するために用いられる成否判別条件442と、制御装置4の処理を実行するために必要な任意の数のその他データ443と、を含んでいる。
検査領域情報441は、ワーク3の作業前画像および作業後画像のそれぞれから切り取られる検査領域を特定するための情報である。具体的には、検査領域情報441は、検査領域の開始点座標(x1、y1)と、検査領域のx方向およびy方向の幅(x_length、y_length)または検査領域の終了点座標(x2、y2)を含む。制御装置4は、検査領域情報441に従って、ワーク3の作業前画像から、開始点座標(x1、y1)、x方向およびy方向の幅(x_length、y_length)または終了点座標(x2、y2)から特定される領域を切り出し、作業前画像の検査領域を取得する。同様に、制御装置4は、検査領域情報441に従って、ワーク3の作業後画像から、開始点座標(x1、y1)、x方向およびy方向の幅(x_length、y_length)または終了点座標(x2、y2)から特定される領域を切り出し、作業後画像の検査領域を取得する。
検査領域情報441は、検査システム100のユーザーまたは管理者によって、適宜設定可能である。例えば、検査システム100のユーザーまたは管理者は、作業前画像および作業後画像の検査領域に、ワーク3の全てのワークポイント32が含まれるように、検査領域情報441を設定してもよいし、作業前画像および作業後画像の検査領域に、ワーク3の任意の1つ以上のワークポイント32が含まれるように、検査領域情報441を設定してもよい。作業前画像および作業後画像の検査領域に、ワーク3の複数のワークポイント32が含まれる場合には、検査システム100は、個々のワークポイント32に対する作業が成功したか否かを個別には判別せず、検査領域に含まれる複数のワークポイント32のそれぞれに対する作業が、全体として成功したか否かを判別する。一方、作業前画像および作業後画像の検査領域に、ワーク3の1つのワークポイント32が含まれる場合には、検査システム100は、該1つのワークポイント32に対する作業が、成功したか否かを判別する。
成否判別条件442は、作業前画像と作業後画像との差分を抽出することにより得られた差分画像に基づいて、ロボット1によるワーク3に対する作業の成否を判別するために用いられる条件である。後述するように、ロボット1によるワーク3に対する作業の成否を判別する際には、差分画像は二値化される。したがって、二値化された差分画像において、作業前画像と作業後画像との相違部分の画素値の値は、1(白色)となっており、作業前画像と作業後画像との共通部分の画素値の値は、0(黒色)となっている。したがって、二値化された差分画像の白色部分(画素値が1の部分)が、作業前画像と作業後画像との相違部分となる。
ワーク3の1つ以上のワークポイント32に対して液体材料の塗布や部品の取り付け等の作業を行う場合、検査領域情報441によって特定された検査領域内における作業前画像と作業後画像との相違部分の面積を、ロボット1によるワーク3に対する作業の成否を判断する際の基準として利用することができる。例えば、作業前画像と作業後画像との相違部分の面積が所定の下限しきい値より小さい場合、ワーク3のワークポイント32に対して、液体材料が塗布されていない、液体材料の塗布量が少ない、または、部品が取り付けられていない等のエラーが発生している。一方、作業前画像と作業後画像との相違部分の面積が所定の上限しきい値より大きい場合、ワーク3のワークポイント32に対して、液体材料が必要以上に塗布されている、または、異なった部品が取り付けられている等のエラーが発生している。
作業前画像と作業後画像との相違部分の面積は、二値化された差分画像の画素値の合計(白色部分の合計画素数)に等しいので、二値化された差分画像の画素値の合計が、所定の下限しきい値と上限しきい値とによって規定される範囲内にあるか否かで、ロボット1によるワーク3に対する作業の成否を判別することができる。したがって、成否判別条件442は、二値化された差分画像の画素値の合計の下限しきい値および上限しきい値である。成否判別条件442は、ロボット1によるワーク3に対する作業の内容、検査領域の大きさ等に応じて、検査システム100のユーザーまたは管理者によって適宜設定される。
モジュール45は、ルーティーン、アプリケーション、プログラム、アルゴリズム、ライブラリー、オブジェクト、コンポーネント、データ構造、またはこれらの組み合わせ等のプロセッサー41により実行可能なコンピューター可読命令である。
モジュール45は、カメラ2を制御するためのカメラ制御モジュール451と、ロボット1を制御するためのロボット制御モジュール452と、ワーク3の作業前画像内の複数の特徴点と、ワーク3の作業前画像内の複数の特徴点にそれぞれ対応するワーク3の作業後画像内の複数の特徴点とを特定し、互いに対応付けられた作業前画像内の特徴点と作業後画像内の特徴点とからそれぞれ構成される複数の特徴点ペアのリストを取得するための特徴点マッチングを実行する特徴点マッチングモジュール453と、特徴点ペアのリストから信頼性の低い特徴点ペアを除外するための除外処理を実行する除外モジュール454と、ワーク3の作業前画像と作業後画像との位置合わせを行うために、ワーク3の作業前画像および作業後画像の少なくとも一方に対して画像補正処理を実行するための画像補正モジュール455と、画像補正処理を実行した後に、ワーク3の作業前画像と作業後画像との差分を抽出することにより、差分画像を取得するための差分画像作成モジュール456と、差分画像に基づいて、ロボット1によるワーク3に対する作業の成否を判別するための検査モジュール457と、制御装置4が提供する機能を補うための任意の数のその他モジュール458と、を含んでいる。
カメラ制御モジュール451は、カメラ2を駆動し、カメラ画像を取得する機能を有している。カメラ制御モジュール451によって取得および補正されたカメラ画像は、メモリー43内に一時的に保存され、制御装置4の各モジュールによって用いられる。特に、カメラ制御モジュール451は、ロボット1によるワーク3に対する作業を実行する前にワーク3を撮影することにより、ワーク3の作業前画像を取得し、さらに、ロボット1によるワーク3に対する作業を実行した後にワーク3を撮影することにより、ワーク3の作業後画像を取得するために、制御装置4によって用いられる。
ロボット制御モジュール452は、ロボット1を制御する機能を有している。より具体的には、ロボット制御モジュール452は、ロボット1の可動部13を駆動させ、ロボット1の作業部12とワークテーブル11上のワーク3との相対位置を変化させる機能と、作業部12を駆動させ、ワーク3に対して所定の作業を実行する機能と、を有している。
ロボット制御モジュール452は、可動部13のX軸可動部13X、Y軸可動部13Y、およびZ軸可動部13Zをそれぞれ独立に駆動させることができる。ロボット制御モジュール452は、カメラ2によって取得されるカメラ画像を参照し、ワーク3の複数のワークポイント32のそれぞれの位置を特定する。その後、ロボット制御モジュール452は、ロボット1の作業部12とワークテーブル11上のワーク3の任意の1つのワークポイント32との相対位置を変化させるために、可動部13のX軸可動部13X、Y軸可動部13Y、およびZ軸可動部13Zのそれぞれの駆動の目標量を決定し、X軸可動部13X、Y軸可動部13Y、およびZ軸可動部13Zのそれぞれ用の出力値を決定する。その後、ロボット制御モジュール452は、可動部13のX軸可動部13XおよびY軸可動部13Yに対して、決定した出力値を出力し、可動部13のX軸可動部13XおよびY軸可動部13Yをそれぞれ独立に駆動させ、作業部12とワーク3との相対位置を、ワーク3の1つのワークポイント32に対する作業を実行するために適切な所定の状態とする。
より具体的には、ロボット制御モジュール452は、最初に、X軸可動部13XおよびY軸可動部13Yを駆動し、作業部12の先端部121とワーク3の1つのワークポイント32との相対位置がアプローチ条件を満たすようにする。なお、ここでいう「アプローチ条件」とは、作業部12の先端部121とワーク3の1つのワークポイント32とのXY平面上での相対位置が、ロボット制御モジュール452がZ軸可動部13Zを駆動し、作業部12の先端部121をワーク3の1つのワークポイント32に向かってアプローチさせるために適した条件にあるか否かを判断するための条件である。例えば、アプローチ条件は、カメラ2が取得したカメラ画像内における作業部12の先端部121とワーク3の1つのワークポイント32との離間距離、ワーク3の1つのワークポイント32に対する作業部12の先端部121の角度等である。アプローチ条件は、作業部12の形状、作業部12が行う作業の種類、ワーク3の形状、大きさ等に応じて事前に設定されている。このように、ロボット制御モジュール452は、X軸可動部13XおよびY軸可動部13Yを駆動し、作業部12の先端部121とワーク3の1つのワークポイント32との相対位置がアプローチ条件を満たすようにする。
その後、ロボット制御モジュール452は、Z軸可動部13Zを駆動し、作業部12の先端部121をワーク3の1つのワークポイント32に対してアプローチさせ、作業部12の先端部121を、ワーク3の1つのワークポイント32に接触または近接させる。その後、ロボット制御モジュール452は、作業部12を駆動し、ワーク3の1つのワークポイント32に対して所定の作業を行う。ワーク3の1つのワークポイント32に対する所定の作業が終了した後、ロボット制御モジュール452は、ワーク3の別のワークポイント32に対する作業を実行するために、可動部13および作業部12を駆動する。ロボット1によるワーク3の全てのワークポイント32に対する作業が終了すると、ロボット制御モジュール452によって、作業部12が初期位置に戻される。この際、ロボット1の可動部13のZ軸可動部13Zに取り付けられているカメラ2も、初期位置に戻される。この状態において、カメラ制御モジュール451がカメラ2を駆動し、ワーク3の作業後画像を取得する。
特徴点マッチングモジュール453は、ワーク3の作業前画像内の複数の特徴点と、ワーク3の作業前画像内の複数の特徴点にそれぞれ対応するワーク3の作業後画像内の複数の特徴点とを特定し、互いに対応付けられた作業前画像内の特徴点と作業後画像内の特徴点からそれぞれ構成される複数の特徴点ペアのリストを取得するための特徴点マッチングを実行する機能を有している。ここでいう、特徴点ペアとは、作業前画像内の任意の1つの特徴点と、これに対応する作業後画像内の特徴点とから構成されるペアである。特徴点マッチングモジュール453は、特徴点マッチングの分野において既知の任意の特徴点マッチングアルゴリズム、例えば、SIFT、SURF、AKAZE、ORB等を用いて、ワーク3の作業前画像内の複数の特徴点と、ワーク3の作業前画像内の複数の特徴点にそれぞれ対応するワーク3の作業後画像内の複数の特徴点とを特定し、複数の特徴点ペアのリストを取得することができる。
典型的には、特徴点マッチングモジュール453は、最初に、キャニーエッジ検出(Canny edge detector)等の任意のエッジ抽出方法を用いて、ワーク3の作業前画像内の複数の特徴点と、ワーク3の作業後画像内の複数の特徴点とを検出する。この際、作業前画像および作業後画像のそれぞれ内のワーク3の四隅のエッジ部および複数の基準マーカー31が、特徴点として検出されることが好ましい。その後、特徴点マッチングモジュール453は、作業前画像内の任意の特徴点と、作業後画像内の全ての特徴点のそれぞれとの類似度の算出を行い、最も高い類似度を有する作業後画像内の特徴点を、作業前画像内の任意の特徴点に対応する作業後画像内の特徴点であると特定する。次に、特徴点マッチングモジュール453は、作業前画像内の任意の特徴点と、特定された作業後画像内の対応する特徴点とを対応付けて、1組の特徴点ペアを構成する。この特徴点ペアの構成を、作業前画像内の全ての特徴点に対して実行し、特徴点ペアの第1の仮リストを取得する。このような特徴点ペアのリストの取得は、特徴点マッチングの分野において、総当たりマッチング(Brute Force Matching)と称され、ハミング距離等の既知の方法で算出される任意の類似度を利用して実行される。
次に、特徴点マッチングモジュール453は、作業前画像内の全ての特徴点に対して実行した前述の総当たりマッチングを、作業後画像内の全ての特徴点に対して実行し、複数の特徴点ペアの第2の仮リストを取得する。その後、特徴点マッチングモジュール453は、特徴点ペアの第1の仮リストと、特徴点ペアの第2の仮リストとを比較し(このような比較は、特徴点マッチングの分野において、「クロスチェック」と称される)、複数の特徴点ペアの第1の仮リストと、複数の特徴点ペアの第2の仮リストとで一致する特徴点ペアのみで、複数の特徴点ペアのリストを作成する。特徴点マッチングモジュール453によって取得された複数の特徴点ペアのリストは、メモリー43内に一時保存される。
除外モジュール454は、特徴点マッチングモジュール453によって取得された複数の特徴点ペアのリストから、信頼性の低い特徴点ペアを除外するための除外処理を実行する機能を有している。除外モジュール454によって実行される除外処理は、(1)特徴点ペアのリストに含まれる複数の特徴点ペアの作業前画像内の複数の特徴点同士の角度と、特徴点ペアのリストに含まれる複数の特徴点ペアの作業後画像内の複数の特徴点同士の角度との角度差に基づいて、信頼性の低い特徴点ペアを判別し、特徴点ペアのリストから信頼性の低い特徴点ペアを除外する第1の除外処理と、(2)特徴点ペアのリストに含まれる複数の特徴点ペアのそれぞれの作業前画像内の特徴点と作業後画像内の特徴点との間のユークリッド距離を算出し、さらに、算出されたユークリッド距離に基づいて、信頼性の低い特徴点ペアを判別し、特徴点ペアのリストから信頼性の低い特徴点ペアを除外する第2の除外処理と、(3)特徴点ペアのリストに含まれる複数の特徴点ペアのそれぞれの作業前画像内の特徴点と作業後画像内の特徴点との間の角度を算出し、さらに、算出された角度に基づいて、信頼性の低い特徴点ペアを判別し、特徴点ペアのリストから信頼性の低い特徴点ペアを除外する第3の除外処理と、を含む。
図7は、第1の除外処理を説明するための図である。図8は、第2の除外処理および第3の除外処理を説明するための図である。なお、図7および図8中においては、図の見易さのため、作業前画像および作業後画像のそれぞれ内にM字状の被写体が含まれているものとする。検査システム100を実際に運用する際には、作業前画像および作業後画像のそれぞれ内にワーク3が含まれる点に注意されたい。図7に示されているような作業前画像および作業後画像に対して、特徴点マッチングモジュール453による特徴点マッチングが実行されると、例えば、図7および図8中において丸印でマークされているような複数の特徴点FPが検出される。図7および図8中において、特徴点FP1nは、特徴点マッチングモジュール453によって取得された特徴点ペアのリストに含まれる第n番目の特徴点ペアを構成する作業前画像内の特徴点を表し、特徴点FP2nは、特徴点マッチングモジュール453によって取得された特徴点ペアのリストに含まれる第n番目の特徴点ペアを構成する作業後画像内の特徴点を表す。したがって、特徴点ペアのリストに含まれる第n番目の特徴点ペアは、互いに対応付けられた作業前画像内の特徴点FP1nおよび作業後画像内の特徴点FP2nから構成される。
最初に、図7を参照して、第1の除外処理を詳述する。第1の除外処理において、作業前画像内の各特徴点FP1nの他の特徴点FP1mのそれぞれに対する角度θ1nmが下記式(1)によって算出され、各特徴点FP1nの他の特徴点FP1mに対する角度の集合Θ1n=(θ1n0,θ1n1,θ1n2,...,θ1nm-1,θ1nm)が取得される。
ここで、nおよびmは、0以上の整数(n≠m)であり、x
1nおよびy
1nは、第n番目の特徴点ペアの特徴点FP
1nの作業前画像内におけるx座標およびy座標であり、x
1mおよびy
1mは、第m番目の特徴点ペアの特徴点FP
1mの作業前画像内におけるx座標およびy座標であり、θ
1nmは、第n番目の特徴点ペアの特徴点FP
1nの第m番目の特徴点ペアの特徴点FP
1mに対する角度である。
次に、作業後画像内の各特徴点FP2nの他の特徴点FP2mのそれぞれに対する角度θ2nmが下記式(2)によって算出され、各特徴点FP2nの他の特徴点FP2mに対する角度の集合Θ2n=(θ2n0,θ2n1,θ2n2,...,θ2nm-1,θ2nm)が取得される。
ここで、nおよびmは、0以上の整数(n≠m)であり、x
2mおよびy
2mは、特徴点ペアのリストに含まれる第m番目の特徴点ペアの特徴点FP
2mの作業後画像内におけるx座標およびy座標であり、x
2nおよびy
2nは、特徴点ペアのリストに含まれる第n番目の特徴点ペアの特徴点FP
2nの作業後画像内におけるx座標およびy座標であり、θ
2nmは、第n番目の特徴点ペアの特徴点FP
2nの第m番目の特徴点ペアの特徴点FP
2mに対する角度である。
次に、下記式(3)にしたがって、複数の特徴点ペアの作業前画像内の複数の特徴点FP1n同士の角度θ1nmと、複数の特徴点ペアの作業前画像内の複数の特徴点FP1n同士の角度θ2nmとの角度差Δθnmが計算され、特徴点ペアの角度差Δθnmの集合ΔΘn=(Δθn0,Δθn1,...,Δθnm-1,Δθnm)と、全ての特徴点ペアの角度差Δθnmを含む集合ΔΘ=(ΔΘ0,ΔΘ1,...,ΔΘn-1,ΔΘn)が取得される。
ここで、Δθ
nmは、作業前画像内の第n番目の特徴点ペアの特徴点FP
1nの作業前画像内の第m番目の特徴点ペアの特徴点FP
1mに対する角度と、作業後画像内の第n番目の特徴点ペアの特徴点FP
2nの作業後画像内の第m番目の特徴点FP
2mに対する角度との角度差である。
次に、各特徴点ペアの角度差Δθnmの集合ΔΘn=(Δθn0,Δθn1,...,Δθnm-1,Δθnm)の第一四分位数(25パーセンタイル)、第三四分位数(75パーセンタイル)、および第三四分位数から第一四分位数を引いた四分位範囲(=第三四分位数-第一四分位数)が算出され、メモリー43内に一時的に保存される。次に、各特徴点ペアの角度差Δθnmの集合ΔΘnから、自身の第一四分位数、第三四分位数、および四分位範囲から算出された(第一四分位数-1.5×四分位範囲)未満の角度差Δθnmと、(第一四分位数+1.5×四分位範囲)を超える角度差Δθnmを、外れ値として除外する。次に、外れ値が除外された各特徴点ペアの角度差Δθnmの集合ΔΘnの中央値(50パーセンタイル)が算出され、特徴点ペアの角度差Δθnmの集合ΔΘnのそれぞれ(ΔΘ0,ΔΘ1,...,ΔΘn-1,ΔΘnのそれぞれ)の中央値がメモリー43内に一時保存される。以下、外れ値が除外された各特徴点ペアの角度差Δθnmの集合ΔΘnの中央値を、各特徴点ペアの角度差Δθnmの中央値という。
次に、集合ΔΘを構成する全ての特徴点ペアの角度差Δθnmの第一四分位数、第三四分位数、および第三四分位数から第一四分位数を引いた四分位範囲が算出され、メモリー43内に一時的に保存される。その後、集合ΔΘから、(第一四分位数-1.5×四分位範囲)未満の角度差Δθnmと、(第一四分位数+1.5×四分位範囲)を超える角度差Δθnmを、外れ値として除外する。次に、外れ値が除外された集合ΔΘを構成する全ての特徴点ペアの角度差Δθnmの中央値および標準偏差σθが算出され、メモリー43内に一時保存される。以下、外れ値が除外された集合ΔΘを構成する全ての特徴点ペアの角度差Δθnmの中央値および標準偏差σθを、それぞれ、全ての特徴点ペアの角度差Δθnmの中央値および標準偏差σθという。
作業前画像内の特徴点FP1nと作業後画像内の特徴点FP2nのマッチングが正しくなされている場合、作業前画像と作業後画像の変形が互いに異なっていたとしても、作業前画像内の特徴点FP1nの他の特徴点FP1mに対する角度と、作業後画像内の特徴点FP2nの他の特徴点FP2mに対する角度との角度差Δθnmは、ある一定の値から大きく変化しない。したがって、第n番目の特徴点ペアの角度差Δθnmの中央値が、全ての特徴点ペアの角度差Δθnmの中央値と大きく異なっている場合、第n番目の特徴点ペアが、誤ったマッチング結果によって得られたものである可能性が高く、信頼性の低い特徴点ペアであると判断することができる。例えば、第1番目の特徴点ペアの角度差Δθ1mの中央値が、全ての特徴点ペアの角度差Δθnmの中央値と大きく異なっている場合、第1番目の特徴点ペアが、信頼性の低い特徴点ペアであると判断することができる。したがって、各特徴点ペアの角度差Δθnmの中央値と、全ての特徴点ペアの角度差Δθnmの中央値とを比較することにより、信頼性の低いマッチングペアを判別することができる。
第1の除外処理は、各特徴点ペアの角度差Δθnmの中央値と、全ての特徴点ペアの角度差Δθnmの中央値とを比較することにより、信頼性の低いマッチングペアを判別する。具体的には、各特徴点ペアの角度差Δθnmの中央値が、全ての特徴点ペアの角度差Δθnmの中央値±Nσθ(ここで、Nは、1以上の整数であり、必要に応じて適宜設定される。)の範囲内にあるか否かが判別される。角度差Δθnmの中央値が該範囲外である特徴点ペアが、信頼性の低い特徴点ペアであるとして、特徴点マッチングモジュール453によって取得された特徴点ペアのリストから除外される。このようにして、第1の除外処理は、特徴点マッチングモジュール453によって取得された特徴点ペアのリストから、信頼性の低い特徴点ペアを除外する。
次に、図8を参照して、第2の除外処理を詳述する。第2の除外処理において、各特徴点ペアを構成する作業前画像内の特徴点FP1nと作業後画像内の特徴点FP2nとの間のユークリッド距離dnが、下記式(4)によって算出され、ユークリッド距離dnの集合D=(d0,d1,...,dn-1,dn)が取得され、メモリー43内に一時保存される。
ここで、αおよびβは、同一平面状において作業前画像と作業後画像が重ならないようにするために、作業後画像内の特徴点FP2nのx座標およびy座標にそれぞれ加算される任意の定数である。また、dnは、特徴点ペアを構成する互いに対応付けられた特徴点同士のユークリッド距離である。例えば、ユークリッド距離d1は、第1番目の特徴点ペアの作業前画像内の特徴点FP11と作業後画像内の特徴点FP21との間のユークリッド距離である。
次に、特徴点ペアのユークリッド距離dnの集合Dから、特徴点ペアのユークリッド距離dnの第一四分位数、第三四分位数、および第三四分位数から第一四分位数を引いた四分位範囲が算出され、メモリー43内に一時的に保存される。次に、特徴点ペアのユークリッド距離dnの集合Dから、(第一四分位数-1.5×四分位範囲)未満のユークリッド距離dnと、(第一四分位数+1.5×四分位範囲)を超えるユークリッド距離dnを、外れ値として除外する。次に、外れ値が除外された特徴点ペアのユークリッド距離dnの集合Dの中央値および標準偏差σdが算出され、メモリー43内に一時保存される。
作業前画像内の特徴点FP1nと作業後画像内の特徴点FP2nのマッチングが正しくなされている場合、作業前画像と作業後画像の変形が互いに異なっていたとしても、作業前画像内の特徴点FP1nと、作業後画像内の特徴点FP2nとの間のユークリッド距離dnは、ある一定の値から大きく変化しない。したがって、特徴点ペアのユークリッド距離dnが、特徴点ペアのユークリッド距離dnの集合Dの中央値と大きく異なっている場合、そのような特徴点ペアは、誤ったマッチング結果によって得られたものである可能性が高く、信頼性の低い特徴点ペアであると判断することができる。したがって、各特徴点ペアのユークリッド距離dnと、特徴点ペアのユークリッド距離dnの集合Dの中央値とを比較することにより、信頼性の低いマッチングペアを判別することができる。
第2の除外処理は、各特徴点ペアのユークリッド距離dnと、特徴点ペアのユークリッド距離dnの集合Dの中央値とを比較することにより、信頼性の低いマッチングペアを判別している。具体的には、各特徴点ペアのユークリッド距離dnが、特徴点ペアのユークリッド距離dnの集合Dの中央値±Nσd(ここで、Nは、1以上の整数であり、必要に応じて適宜設定される。)の範囲内にあるか否かが判別される。該範囲外のユークリッド距離dnを有する特徴点ペアが、信頼性の低い特徴点ペアであるとして、特徴点マッチングモジュール453によって取得された特徴点ペアのリストから除外される。このようにして、第2の除外処理は、特徴点マッチングモジュール453によって取得された特徴点ペアのリストから、信頼性の低い特徴点ペアを除外する。
次に、第3の除外処理を詳述する。第3の除外処理において、各特徴点ペアを構成する作業前画像内の特徴点FP1nと作業後画像内の特徴点FP2nとの間の角度φnが、下記式(5)によって算出され、ユークリッド距離φnの集合Φ=(φ0,φ1,...,φn-1,φn)が取得され、メモリー43内に一時保存される。
ここで、φ
nは、特徴点ペアを構成する互いに対応付けられた特徴点同士の角度である。例えば、角度φ
1は、第1番目の特徴点ペアの作業前画像内の特徴点FP
11と作業後画像内の特徴点FP
21との間の角度である。
次に、特徴点ペアの角度φnの集合Φから、特徴点ペアの角度φnの第一四分位数、第三四分位数、および第三四分位数から第一四分位数を引いた四分位範囲が算出され、メモリー43内に一時的に保存される。次に、特徴点ペアの角度φnの集合Φから、(第一四分位数-1.5×四分位範囲)未満の角度φnと、(第一四分位数+1.5×四分位範囲)を超える角度φnを、外れ値として除外する。次に、外れ値が除外された特徴点ペアの角度φnの集合Φの中央値および標準偏差σφが算出され、メモリー43内に一時保存される。
作業前画像内の特徴点FP1nと作業後画像内の特徴点FP2nのマッチングが正しくなされている場合、作業前画像と作業後画像の変形が互いに異なっていたとしても、作業前画像内の特徴点FP1nと、作業後画像内の特徴点FP2nとの間の角度φnは、ある一定の値から大きく変化しない。したがって、特徴点ペアの角度φnが、特徴点ペアの角度φnの集合Φの中央値と大きく異なっている場合、そのような特徴点ペアは、誤ったマッチング結果によって得られたものである可能性が高く、信頼性の低い特徴点ペアであると判断することができる。したがって、各特徴点ペアの角度φnと、特徴点ペアの角度φnの集合Φの中央値とを比較することにより、信頼性の低いマッチングペアを判別することができる。
第3の除外処理では、各特徴点ペアの角度φnと、特徴点ペアの角度φnの集合Φの中央値とを比較することにより、信頼性の低いマッチングペアを判別している。具体的には、各特徴点ペアの角度φnが、特徴点ペアの角度φnの集合Φの中央値±Nσφ(ここで、Nは、1以上の整数であり、必要に応じて適宜設定される。)の範囲内にあるか否かが判別される。該範囲外の角度φnを有する特徴点ペアが、信頼性の低い特徴点ペアであるとして、特徴点マッチングモジュール453によって取得された特徴点ペアのリストから除外される。このようにして、第3の除外処理は、特徴点マッチングモジュール453によって取得された特徴点ペアのリストから、信頼性の低い特徴点ペアを除外する。
除外モジュール454は、上述した第1の除外処理、第2の除外処理、および第3の除外処理の少なくとも1つを実行することにより、特徴点マッチングモジュール453によって取得された特徴点ペアのリストから、信頼性の低い特徴点ペアを除外することができる。
画像補正モジュール455は、ワーク3の作業前画像と作業後画像との位置合わせを実行するために、ワーク3の作業前画像および作業後画像の少なくとも一方に対して画像補正処理を実行する機能を有している。より具体的には、画像補正モジュール455は、特徴点マッチングモジュール453によって取得され、さらに、除外モジュール454によって信頼性の低いマッチングペアが除外された特徴点ペアのリストに含まれる特徴点ペアのワーク3の作業前画像中に含まれるワーク3の複数の特徴点の位置と、ワーク3の作業後画像中に含まれるワーク3の対応する複数の特徴点の位置とが一致するように、ワーク3の作業前画像および作業後画像の少なくとも一方に対して、アフィン変換またはホモグラフィー変換を実行する。アフィン変換およびホモグラフィー変換を用いることにより、画像の二次元的な位置補正(すなわち、XY平面での位置シフトやサイズ変換)だけでなく、画像の3次元的な位置補正を実行することができる。
前述したように、ワーク3の作業前画像および作業後画像の変形が互いに異なっている場合、ワーク3の作業前画像および作業後画像の少なくとも一方に対するXY方向の位置補正を行っただけでは、作業前画像内における複数の特徴点の位置と、作業後画像内における対応する複数の特徴点の位置とを一致させることができない。一方、ワーク3の作業前画像および作業後画像の変形が互いに異なっている場合であっても、ワーク3の作業前画像および作業後画像の少なくとも一方に対して適切にアフィン変換またはホモグラフィー変換を実行することにより、作業前画像内における複数の特徴点の位置と、作業後画像内における対応する複数の特徴点の位置とを一致させることができる。
画像処理分野においてよく知られているように、画像のアフィン変換は、画像の線形変換(回転、拡大縮小、せん断変換)と平行移動の組み合わせであり、長方形の画像を平行四辺形の画像に変形させることができる。ワーク3の作業前画像と作業後画像の位置合わせを行うため、画像補正モジュール455は、ワーク3の作業前画像における3点以上の特徴点の位置と、ワーク3の作業後画像における対応する3点以上の特徴点の位置とが一致するように、ワーク3の作業前画像および作業後画像の少なくとも一方に対してアフィン変換を実行する。アフィン変換は、画像処理分野においてよく知られているように、変換前の座標をアフィン変換後の座標に変換する行列式を用いて実行される。本発明の検査システム100においては、ワーク3の作業前画像における3点以上の特徴点の位置と、ワーク3の作業後画像における対応する3点以上の特徴点の位置とを一致させるための行列式が算出され、該行列式を用いて、ワーク3の作業前画像および作業後画像の少なくとも一方に対してアフィン変換が実行される。ワーク3の作業前画像と作業後画像の位置合わせのために、ワーク3の作業前画像および作業後画像の少なくとも一方に対する画像補正が、アフィン変換で十分な場合には、画像補正モジュール455は、アフィン変換を用いて、ワーク3の作業前画像および作業後画像の少なくとも一方を補正する。
一方、画像のホモグラフィー変換は、アフィン変換を拡張したものであり、アフィン変換の機能に加えて、アフィン変換が対応できない長方形の画像から台形の画像への変換を実行することができる。ワーク3の作業前画像と作業後画像の位置合わせを行うため、画像補正モジュール455は、ワーク3の作業前画像における4点以上の特徴点の位置と、ワーク3の作業後画像における対応する4点以上の特徴点の位置とが一致するように、ワーク3の作業前画像および作業後画像の少なくとも一方に対してホモグラフィー変換を実行する。アフィン変換と同様に、ホモグラフィー変換は、変換前の座標をホモグラフィー変換後の座標に変換する行列式(ホモグラフィ行列)を用いて実行される。本発明の検査システム100においては、ワーク3の作業前画像における4点以上の特徴点の位置と、ワーク3の作業後画像における対応する4点以上の特徴点の位置とを一致させるための行列式が算出され、該行列式を用いて、ワーク3の作業前画像および作業後画像の少なくとも一方に対してホモグラフィー変換が実行される。ワーク3の作業前画像および作業後画像の少なくとも一方に対する画像補正が、アフィン変換で不十分な場合には、画像補正モジュール455は、ホモグラフィー変換を用いて、ワーク3の作業前画像および作業後画像の少なくとも一方を補正する。画像補正モジュール455が、アフィン変換とホモグラフィー変換のいずれを、ワーク3の作業前画像および作業後画像の少なくとも一方に実行するかは、検査システム100のユーザーまたは管理者によって適宜事前に設定される。
画像補正モジュール455は、上述のようなアフィン変換またはホモグラフィー変換を用いて、ワーク3の作業前画像中に含まれるワーク3の複数の特徴点の位置と、ワーク3の作業後画像中に含まれるワーク3の対応する複数の特徴点の位置とが一致するように、ワーク3の作業前画像および作業後画像の少なくとも一方を補正する。画像補正モジュール455によるワーク3の作業前画像および作業後画像の少なくとも一方に対する画像補正処理によって位置合わせされたワーク3の作業前画像および作業後画像は、メモリー43内に一時的に保存され、差分画像を作成するために用いられる。
差分画像作成モジュール456は、画像補正モジュール455によって位置合わせされたワーク3の作業前画像と作業後画像との差分を抽出することにより、差分画像を取得する機能を有している。図9には、差分画像作成モジュール456によって実行される差分画像抽出処理の概要が示されている。図9に示されているように、最初に、差分画像作成モジュール456は、メモリー43内に保存されている検査領域情報441を参照して、ワーク3の作業前画像および作業後画像のそれぞれの検査領域を切り出す。その後、差分画像作成モジュール456は、作業前画像の検査領域と作業後の検査領域との差分を抽出し、差分画像を取得する。より具体的には、差分画像作成モジュール456は、作業前画像の検査領域の画素の値の絶対値と、作業後画像の検査領域の対応する画素の値の絶対値との差分の絶対値を得ることによって、差分画像を作成する。その後、差分画像作成モジュール456は、作成された差分画像に対して、適切なしきい値を用いた二値化処理を施し、二値化された差分画像を取得する。図9に示されているように、二値化された差分画像内において、作業前画像と作業後画像との相違部分の画素値の値は、1(白色)となっており、作業前画像と作業後画像との共通部分の画素値の値は、0(黒色)となっている。このような二値化された差分画像は、メモリー43内に一時保存され、ロボット1によるワーク3に対する作業の成否を判別するために用いられる。
検査モジュール457は、差分画像作成モジュール456によって作成された差分画像に基づいて、ロボット1によるワーク3に対する作業の成否を判別する機能を有している。より具体的には、検査モジュール457は、最初に、差分画像作成モジュール456によって作成された二値化された差分画像の画素値の合計(白色部分の画素の合計数)を算出する。次に、検査モジュール457は、メモリー43内に保存されている成否判別条件442を参照し、算出した二値化された差分画像の画素値の合計(白色部分の画素の合計数)が、成否判別条件442の下限しきい値と上限しきい値とによって規定される範囲内であるか否かを判別する。
算出した二値化された差分画像の画素値の合計が、下限しきい値と上限しきい値によって規定される範囲内である場合には、検査モジュール457は、ロボット1によるワーク3に対する作業が成功したと判断する。一方、算出した二値化された差分画像の画素値の合計が、下限しきい値と上限しきい値によって規定される範囲内ではない場合には、検査モジュール457は、ロボット1によるワーク3に対する作業が失敗したと判断する。その後、検査モジュール457は、I/Oインターフェース42を用いて、判断結果を検査システム100のユーザーまたは管理者に通知する。これにより、ロボット1によるワーク3に対する作業が失敗した場合には、検査システム100のユーザーまたは管理者は、ロボット1の点検等の適切な措置を取ることができる。
このように、本発明の検査システム100においては、ワーク3の作業前画像内の複数の特徴点の位置と、ワーク3の作業後画像内の対応する複数の特徴点との位置がそれぞれ一致するよう、ワーク3の作業前画像および作業後画像の少なくとも一方に対して画像補正処理(アフィン変換またはホモグラフィー変換)が実行される。そのため、ワーク3に対するカメラ2の姿勢や向きの違いに起因して、ワーク3の作業前画像および作業後画像の変形が互いに異なっている場合であっても、作業前画像中におけるワーク3の各要素の位置と、作業後画像中におけるワーク3の対応する各要素の位置との間の位置ズレを正確に補正し、ワーク3に対する作業の成否を正確に判別することができる。
<検査方法S100>
上述した検査システム100を用いて本発明の検査方法が実行される。以下、図10を参照して、本発明の検査方法を詳述する。図10は、本発明の検査方法を示すフローチャートである。
検査方法S100は、検査システム100のユーザーまたは管理者が、制御装置4に対してワーク3に対する所定の作業を開始するための操作を実行すると、開始される。最初に、工程S110において、制御装置4のプロセッサー41は、カメラ制御モジュール451を用いてカメラ2を駆動し、ワークテーブル11上に載置されているワーク3を撮影し、ワーク3の作業前画像を取得する。
次に、工程S120において、制御装置4のプロセッサー41は、ロボット制御モジュール452を用いて、ロボット1の可動部13および作業部12を駆動し、ワーク3に対する作業を実行する。具体的には、ロボット制御モジュール452は、最初に、工程S110において取得されたワーク3の作業前画像を参照し、作業前画像内の作業部12の先端部121およびワーク3のワークポイント32のそれぞれの位置を特定する。その後、ロボット制御モジュール452は、ロボット1の作業部12とワーク3の任意の1つのワークポイント32との相対位置を変化させるために、可動部13のX軸可動部13X、Y軸可動部13Y、およびZ軸可動部13Zのそれぞれの駆動の目標量を決定する。その後、ロボット制御モジュール452は、X軸可動部13XおよびY軸可動部13Yに対して、決定した出力値を出力し、X軸可動部13XおよびY軸可動部13Yをそれぞれ独立に駆動させ、作業部12とワーク3との相対位置を、ワーク3の1つのワークポイント32に対する作業を実行するために適切な所定の状態とする。
その後、ロボット制御モジュール452は、Z軸可動部13Zに対して決定した出力値を出力し、Z軸可動部13Zを駆動し、作業部12の先端部121をワーク3の1つのワークポイント32に対してアプローチさせ、作業部12の先端部121を、ワーク3の1つのワークポイント32に接触または近接させる。その後、ロボット制御モジュール452は、作業部12を駆動し、ワーク3の1つのワークポイント32に対して所定の作業を行う。ワーク3の1つのワークポイント32に対する所定の作業が終了した後、ロボット制御モジュール452は、ワーク3の別のワークポイント32に対する作業を実行するために、可動部13および作業部12を駆動する。ロボット1によるワーク3の全てのワークポイント32に対する作業が終了すると、ロボット制御モジュール452によって、作業部12が初期位置に戻される。この際、ロボット1の可動部13のZ軸可動部13Zに取り付けられているカメラ2も、初期位置に戻される。
次に、工程S130において、制御装置4のプロセッサー41は、カメラ制御モジュール451を用いて、カメラ2を駆動し、ワーク3の作業後画像を取得する。工程S140において、制御装置4のプロセッサー41は、特徴点マッチングモジュール453を用いて、ワーク3の作業前画像内の複数の特徴点と、ワーク3の作業前画像内の複数の特徴点にそれぞれ対応するワーク3の作業後画像内の複数の特徴点とを特定し、互いに対応付けられた作業前画像内の特徴点と作業後画像内の特徴点からそれぞれ構成される複数の特徴点ペアのリストを取得するための特徴点マッチングを実行する。この際、作業前画像および作業後画像のそれぞれ内のワーク3の四隅のエッジ部および複数の基準マーカー31が、特徴点として検出されることが好ましい。
次に、工程S150において、制御装置4のプロセッサー41は、除外モジュール454を用いて、前述した第1の除外処理、第2の除外処理、および第3の除外処理の少なくとも1つを実行することにより、工程S140において取得された複数の特徴点ペアのリストから、信頼性の低い特徴点ペアを除外する。なお、工程S150において、第1の除外処理、第2の除外処理、および第3の除外処理の2つ以上が実行される場合の第1の除外処理、第2の除外処理、および第3の除外処理の実行順は特に限定されない。例えば、工程S150において、第1の除外処理、第2の除外処理、および第3の除外処理の全てが実行される場合、第1の除外処理、第2の除外処理、および第3の除外処理の順で、第1の除外処理、第2の除外処理、および第3の除外処理が実行されてもよい。
工程S160において、工程S140において取得され、さらに、工程S150において信頼性の低い特徴点ペアが除外された特徴点ペアのリストに含まれるワーク3の作業前画像中のワーク3の複数の特徴点の位置と、ワーク3の作業後画像中のワーク3の対応する複数の特徴点の位置とが一致するように、ワーク3の作業前画像および作業後画像の少なくとも一方に対して、アフィン変換またはホモグラフィー変換を実行する。画像補正モジュール455によるワーク3の作業前画像および作業後画像の少なくとも一方に対する画像補正処理によって位置合わせされたワーク3の作業前画像および作業後画像は、メモリー43内に一時的に保存され、差分画像を作成するために用いられる。なお、画像補正モジュール455が、アフィン変換とホモグラフィー変換のいずれを、ワーク3の作業前画像および作業後画像の少なくとも一方に実行するかは、検査システム100のユーザーまたは管理者によって適宜事前に設定されている。
工程S170において、制御装置4のプロセッサー41は、差分画像作成モジュール456を用いて、画像補正モジュール455によって位置合わせされたワーク3の作業前画像と作業後画像との差分を抽出することにより、差分画像を取得する。より具体的には、差分画像作成モジュール456は、メモリー43内に保存されている検査領域情報441を参照して、ワーク3の作業前画像および作業後画像のそれぞれの検査領域を切り出す。その後、差分画像作成モジュール456は、作業前画像の検査領域の画素の値の絶対値と、作業後画像の検査領域の対応する画素の値の絶対値との差分の絶対値を得ることによって、差分画像を作成する。その後、差分画像作成モジュール456は、作成された差分画像に対して、適切なしきい値を用いた二値化処理を施し、二値化された差分画像を取得する。二値化された差分画像は、メモリー43内に一時保存され、ロボット1によるワーク3に対する作業の成否を判別するために用いられる。
工程S180において、制御装置4のプロセッサー41は、検査モジュール457を用いて、ロボット1によるワーク3に対する作業の成否を判別する。より具体的には、検査モジュール457は、最初に、差分画像作成モジュール456によって作成された二値化された差分画像の画素値の合計(白色部分の画素の合計数)を算出する。次に、検査モジュール457は、メモリー43内に保存されている成否判別条件442を参照し、算出した二値化された差分画像の画素値の合計(白色部分の画素の合計数)が、成否判別条件442の下限しきい値と上限しきい値とによって規定される範囲内であるか否かを判別する。
算出した二値化された差分画像の画素値の合計が、下限しきい値と上限しきい値とによって規定される範囲内である場合には、検査モジュール457は、ロボット1によるワーク3に対する作業が成功したと判断する。一方、算出した二値化された差分画像の画素値の合計が、下限しきい値と上限しきい値とによって規定される範囲内ではない場合には、検査モジュール457は、ロボット1によるワーク3に対する作業が失敗したと判断する。その後、検査モジュール457は、I/Oインターフェース42を用いて、判断結果を検査システム100のユーザーまたは管理者に通知する。これにより、ロボット1によるワーク3に対する作業が失敗した場合には、検査システム100のユーザーまたは管理者は、ロボット1の点検等の適切な措置を取ることができる。その後、検査方法S100は終了する。
以上、本発明の検査システムおよび検査方法を図示の実施形態に基づいて説明したが、本発明は、これに限定されるものではない。本発明の各コンポーネントの構成は、同様の機能を発揮し得る任意のものと置換することができ、あるいは、本発明の構成に任意の構成のものを付加することができる。
本発明の属する分野および技術における当業者であれば、本発明の原理、考え方、および範囲から有意に逸脱することなく、記述された本発明の検査システムおよび検査方法の構成の変更を実行可能であろうし、変更された構成を有する検査システムおよび検査方法もまた、本発明の範囲内である。
また、図10に示された検査方法の工程の数や種類は、説明のための例示にすぎず、本発明は必ずしもこれに限られない。本発明の原理および意図から逸脱しない範囲において、任意の工程が、任意の目的で追加若しくは組み合わされ、または、任意の工程が削除される態様も、本発明の範囲内である。