以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わせてもよい。
<第1の実施の形態>
[A.画像処理システム構成]
図1は、第1の実施の形態に係る画像処理システムSYSの基本構成を示す模式図である。図1に示す画像処理システムSYSは、ラインLによって提供されるワークWの外観画像を用いて、ワークWの外観を検査するためのシステムである。画像処理システムSYSにおいては、予め定められたワークWに1または複数設定された計測点ごとに外観検査が行われる。
画像処理システムSYSは、画像処理装置2と、ロボット210と、2次元カメラ310と、3次元カメラ410とを含む。典型的には、ロボット210は多関節ロボットであって、SCARA型ロボットなどであってもよい。2次元カメラ310はロボット210の先端に取り付けられている。ロボット210が動くことにより、2次元カメラ310の位置および姿勢が変更される。そのため、ロボット210は、2次元カメラ310とワークWとの相対的な位置関係を変化させることができる。
3次元カメラ410は、ラインL上の所定位置に設けられており、その撮像視野にラインLの少なくとも一部が含まれるように配置されている。ラインLによってワークWが3次元カメラ410の撮像視野内に位置するように提供されたときに、3次元カメラ410は、当該ワークWを撮像することができる。
画像処理装置2は、管理装置100と、ロボット制御部200と、2次元画像処理装置300と、3次元画像処理装置400とから構成される。なお、第1の実施の形態において、画像処理装置2は、4つの装置から構成されるとしたが、一の装置から構成されてもよく、2以上あるいは5以上の装置から構成されてもよい。
管理装置100は、ロボット制御部200、2次元画像処理装置300および3次元画像処理装置400のそれぞれとネットワークNWを介して接続されている。ネットワークNWは、たとえば、フィールドネットワークである。一例としては、ネットワークNWには、EtherCAT(登録商標)やEtherNet/IP(登録商標)などが採用される。
また、管理装置100は、表示装置110および入力装置120と電気的に接続されている。ロボット制御部200は、ロボット210と電気的に接続されている。2次元画像処理装置300は、2次元カメラ310と電気的に接続されている。3次元画像処理装置400は3次元カメラ410と電気的に接続されている。なお、電気的に接続された各装置は、一体で構成されてもよい。つまり、ロボット210とロボット制御部200とは、一体で構成されていてもよい。2次元画像処理装置300と2次元カメラ310とは、一体で構成されていてもよい。3次元画像処理装置400と3次元カメラ410とは、一体で構成されていてもよい。
[B.画像処理システムSYSのハードウェア構成]
図2は、画像処理システムSYSのハードウェア構成について示す模式図である。管理装置100は、演算処理部であるCPU(Central Processing Unit)130と、記憶部としてのメインメモリ140およびハードディスク150と、表示コントローラ160と、データリーダ/ライタ170と、入力インターフェース(I/F)181と、ロボットインターフェイス(I/F)182と、2次元カメラインターフェイス(I/F)183と、3次元カメラインターフェイス(I/F)184とを含む。これらの各部は、バス185を介して、互いにデータ通信可能に接続される。
CPU130は、ハードディスク150にインストールされた画像処理プログラム151を含むプログラム(コード)をメインメモリ140に展開して、これらを所定順序で実行することで、各種の演算を実施する。
メインメモリ140は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置である。メインメモリ140は、ハードディスク150から読み出されたプログラムに加えて、ワークWの外観を検査するための検査用情報1411、2次元画像処理装置300または3次元画像処理装置400から送られた画像処理結果、CPU130の処理結果、ならびにロボット210、2次元カメラ310および3次元カメラ410の位置姿勢(3次元座標上の座標値(X,Y,Z)および角度(θx、θy、θz))に関する情報などを保持する。
検査用情報1411は、たとえば、ワークWの3次元CAD情報、ワークWの計測点の座標位置、計測点についての基準線の方向を示す法線ベクトル、計測点において検査する検査内容、計測点が複数ある場合には検査順序、検査する際の2次元カメラ310の移動経路などを含む。また、検査用情報1411はワークWの種類ごとに設けられている。ワークWの種類としては、たとえば、エンジンブロックやペットボトルなどがある。
ハードディスク150には、各種設定値などが格納されてもよい。なお、ハードディスク150に加えて、あるいは、ハードディスク150に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
表示コントローラ160は、表示装置110であるディスプレイと接続され、CPU130における処理結果などをユーザに通知する。すなわち、表示コントローラ160は、表示装置110に接続され、当該表示装置110での表示を制御する。
データリーダ/ライタ170は、CPU130と記録媒体であるメモリカード171との間のデータ伝送を仲介する。すなわち、メモリカード171には、管理装置100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ170は、このメモリカード171からプログラムを読出す。また、データリーダ/ライタ170は、CPU130の内部指令に応答して、2次元画像処理装置300または3次元画像処理装置400から送られた画像処理結果、CPU130の処理結果などをメモリカード171へ書き込む。なお、メモリカード171は、CF(Compact Flash(登録商標))、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体や、CD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体などからなる。
入力I/F181は、CPU130とマウス、キーボード、タッチパネルなどの入力装置120との間のデータ伝送を仲介する。すなわち、入力I/F181は、ユーザが入力装置120を操作することで与えられる操作指令を受付ける。操作指令は、たとえば、ワークWの計測点を指定する指令、ワークWを指定する指令、検査を開始する指令が含まれる。
ロボットI/F182は、CPU130とロボット制御部200との間のデータ伝送を仲介する。すなわち、ロボットI/F182は、ロボット制御部200と接続される。また、ロボットI/F182は、CPU130からの内部コマンドに従って、ロボット制御部200に移動を指示するコマンドを与える。
2次元カメラI/F183は、CPU130と2次元画像処理装置300との間のデータ伝送を仲介する。すなわち、2次元カメラI/F183は、ワークWを撮像して得られた2次元画像を処理するための2次元画像処理装置300と接続される。また、2次元カメラI/F183は、CPU130からの内部コマンドに従って、2次元画像処理装置300に対して各種画像処理の実行を指示するコマンドを与える。
3次元カメラI/F184は、CPU130と3次元画像処理装置400との間のデータ伝送を仲介する。また、3次元カメラI/F184は、CPU130からの内部コマンドに従って、3次元画像処理装置400に対して各種画像処理の実行を指示するコマンドを与える。
ロボット制御部200は、ロボットI/F182から与えられるコマンドに従って、ロボット210の動作を制御する。ロボット210の動作とは、ロボット210に取り付けられた2次元カメラ310の位置および姿勢を変える動作である。すなわち、ロボット制御部200は、2次元カメラ310の位置および姿勢を制御しているともいえる。
2次元画像処理装置300は、撮像制御部320と画像処理エンジン330と、入出力I/F340とを含む。これらの各部は、バス350を介して、互いにデータ通信可能に接続される。撮像制御部320は、画像処理エンジン330からの指示に従って、接続されている2次元カメラ310における撮像動作を制御する。画像処理エンジン330は、入出力I/F340を介してCPU130から指示された各種画像処理を実行する。入出力I/F340は、画像処理エンジン330が実行した各種画像処理の結果を2次元カメラI/F183を介して管理装置100に送信する。また、入出力I/F340は、2次元カメラI/F183を介して送られるCPU130からの各種指示を受け取る。
3次元画像処理装置400は、撮像制御部420と画像処理エンジン430と、入出力I/F440とを含む。これらの各部は、バス450を介して、互いにデータ通信可能に接続される。なお、3次元画像処理装置400が備えるハードウェアのうち、2次元画像処理装置300が備えるハードウェアと同じ名称のハードウェアは、当該同じ名称のハードウェアと同じ機能を有するものとし、説明を省略する。
2次元カメラ310および3次元カメラ410は、各々、撮像視野に存在する被写体を撮像する撮像部である。2次元カメラ310は、主たる構成要素として、レンズや絞りなどの光学系と、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどの受光素子とを含む。3次元カメラ410は、典型的には、アクティブ方式の3次元カメラであって、計測用のパターンを投光するプロジェクタと、カメラとで構成され、カメラの主たる構成要素として、レンズや絞りなどの光学系と、CCDイメージセンサやCMOSイメージセンサなどの受光素子とを含む。なお、パッシブ方式のステレオカメラであってもよい。
2次元カメラ310は、2次元画像処理装置300からの指令に従って撮像するとともに、その撮像によって得られた2次元画像データを2次元画像処理装置300へ出力する。
3次元カメラ410は、3次元画像処理装置400からの指令に従って撮像するとともに、その撮像によって得られた3次元画像データを3次元画像処理装置400へ出力する。
[C.画像処理システムの概要]
次に、画像処理システムSYSの概要について説明する。画像処理システムSYSは、ワークWに設定された1または複数の計測点WpごとにワークWの外観を検査するためのシステムである。画像処理システムSYSにおいて実行されるワークWの外観検査に関する処理は、2次元カメラ310のピントをワークWの計測点Wpに合わせる処理と、2次元カメラ310のピントを計測点Wpに合わせた状態で検査を実行する処理とを含む。計測点WpごとにワークWの外観検査をするとは、ワークW上に設定された計測点Wpごとに、計測点Wpを含む計測領域に対する外観検査を行なうことを意味する。計測点Wpは、計測領域を代表する点であって、2次元カメラ310の光軸を合わせるための基準点に相当する。
画像処理システムSYSにおいては、2次元カメラ310のピントをワークWの計測点Wpに合わせる処理と、2次元カメラ310のピントを計測点Wpに合わせた状態で検査を実行する処理とを繰り返すことでワークW全体の外観検査が行われる。
2次元カメラ310のピントをワークWの計測点Wpに合わせる処理は、計測点Wpについての基準線を特定する処理と、特定した基準線上で2次元カメラ310のピントを計測点Wpに合わせる処理とを含む。画像処理システムSYSにおいては、特定した法線V上に2次元カメラ310を位置決めすることができる。ここで、「基準線」とは、2次元カメラ310の向きを設定する際の基準になる線であって、計測点Wpが位置するワークWの微小平面に対して略垂直な垂線である法線や、ユーザによって任意に設定される線を含む。本実施の形態においては、基準線を法線Vとして説明する。
図3を参照して、2次元カメラ310のピントをワークWの計測点Wpに合わせる処理が実行されたときのロボット210の具体的な動きについて説明する。図3は、2次元カメラ310のピントをワークWの計測点Wpに合わせる処理が実行されたときのロボット210の動きの一例を示す図である。
図3には、法線V上に2次元カメラ310を位置決めする処理(ステップS1)が実行されたときのロボット210の動きと、法線V上で2次元カメラ310のピントを合わせる処理(ステップS1)が実行されたときのロボット210の動きとが示されている。
ステップS1において、管理装置100は、ワークWを撮像して得られる情報に基づいてワークWの配置状況を特定する。ここで、配置状況は、ワークWの位置だけでなく、ワークWの向きを含む概念である。管理装置100は、特定したワークWの配置状況に応じてワークWに設定された各計測点Wpについての法線Vを特定する。ここで、計測点Wpが図3に示すように複数設定されている場合にあっては、法線Vが特定されることで、検査経路WLが生成されることとなる。つまり、検査経路WLを生成するためには、管理装置100はワークWの配置状況を特定するとともに、特定したワークWの配置状況に応じてワークWに設定された各計測点Wpについての法線Vを特定する必要がある。
管理装置100は、特定した法線Vと2次元カメラ310の光軸Oとが一致するように2次元カメラ310の位置姿勢を決定し、決定した2次元カメラ310の位置姿勢に関する情報をロボット制御部200に送信する。ロボット制御部200は、受信した2次元カメラ310の位置姿勢に関する情報に基づいてロボット210に動作指令を送る。これにより、ロボット210の姿勢が、図3(S1)中の破線で示されたロボット210’の姿勢に変わることで、2次元カメラ310の位置姿勢を図3(S1)中の破線で示された2次元カメラ310’の位置姿勢に変える。
ステップS2において、管理装置100は、決定した法線Vと2次元カメラ310の光軸Oとが一致する状態で2次元カメラ310を動かすための法線軌道を生成する。管理装置100は、生成した法線軌道に関する情報および動作を指示するコマンドをロボット制御部200に送信する。これにより、ロボット210は2次元カメラ310を図3(S2)中の両向き矢印の方向に沿って動かし、2次元カメラ310と計測点Wpとの距離を変化させる。
また、ステップS2において、管理装置100は、2次元カメラ310により撮像される2次元画像に基づいて2次元カメラ310の合焦度aに関する特徴量を算出することを2次元画像処理装置300に指示する。ここで、「合焦度a」とは、2次元カメラ310のピントがどの程度合っているかを示す指標である。なお、以下においては、合焦度aに関する特徴量を単に合焦度aともいう。管理装置100は、計測点Wpと2次元カメラ310との距離が異なる各位置における2次元カメラ310の合焦度aを得る。管理装置100は、2次元カメラ310と計測点Wpとの間の距離の変化に応じた合焦度aの変化に基づいて、2次元カメラ310のピントが計測点Wpに合っている2次元カメラ310と計測点Wpとの間の距離を決定する。
このように、画像処理システムSYSは、ラインLによって提供されたワークWの配置状況に応じて、設定されたワークWの計測点Wpについての法線Vを特定することができる。また、画像処理システムSYSは、2次元カメラ310と計測点Wpとの距離を変化させることで、2次元カメラ310のピントを計測点Wpに合わせることができる。その結果、2次元カメラ310の光学系を変えることなく、2次元カメラ310のピントを計測点Wpに合わせることができる。よって、画像処理システムSYSにおいては、正確な外観検査を実行することができる。また、画像処理システムSYSにおいては、管理装置100が外観画像に基づいて計測点Wpの法線Vを決定し、2次元カメラ310を法線V上に沿って動かしたときの2次元カメラ310の合焦度aに基づいて、2次元カメラ310のピントが計測点Wpに合う位置を決定する。そのため、画像処理システムSYSにおいては、ラインLによって提供されたワークWの位置と、2次元カメラ310との位置関係を調整することができる。
[D.検査処理]
画像処理システムSYSにおいて実行されるワークWの外観検査に関する処理は、2次元カメラ310のピントをワークWの計測点Wpに合わせる処理と、2次元カメラ310のピントを計測点Wpに合わせた状態で検査を実行する処理とを含む。2次元カメラ310のピントをワークWの計測点Wpに合わせる処理は、計測点についての法線Vを特定する処理と、特定した法線V上で2次元カメラ310のピントを計測点Wpに合わせる処理とを含む。
計測点Wpについての法線Vを特定する処理は、より具体的には、ワークWを撮像して得られる情報に基づいてワークWの配置状況を特定する処理と、特定した配置状況に応じてワークWに設定された各計測点Wpについての法線Vを特定する処理とを含む。
第1の実施の形態において、計測点Wpについての法線Vを特定する処理は、3次元カメラ410および2次元カメラ310を用いて行われる。具体的には、計測点Wpについての法線Vを特定する処理は、3次元カメラ410が撮像した3次元画像に基づいてワークWに設定された各計測点Wpについての法線Vを決定する処理と、決定された法線V上に2次元カメラ310を位置決めした状態で決定された法線Vを当該2次元カメラ310が撮像した2次元画像に基づいて補正する処理とを含む。
つまり、第1の実施の形態において、計測点Wpについての法線Vを特定する処理は、(1)3次元画像に基づいてワークWの配置状況を特定する処理と、(2)3次元画像に基づいて特定した配置状況に応じてワークWに設定された各計測点Wpについての法線Vを決定する処理と、(3)決定された法線V上に2次元カメラ310を位置決めした状態で当該2次元カメラ310が撮像した2次元画像に基づいてワークWの配置状況を特定する処理と、(4)決定された法線Vを2次元画像に基づいて特定した配置状況に応じて補正する処理とから成る。
図4を参照して、画像処理システムSYSにおいて実行されるワークWの外観検査に関する処理を実現するために、管理装置100のCPU130が実行する検査処理について説明する。図4は、検査処理のフローチャートである。CPU130は、ワークWの検査を実行する指令を受け付けたことに基づいて検査処理を実行する。なお、ワークWの検査を実行する指令は、たとえば、入力装置120からユーザによって入力される。また、ワークWの検査を実行する指令は、ワークWが3次元カメラ410の撮像視野範囲内に提供されたことに応じて3次元画像処理装置400またはラインLを管理する装置(図示せず)から入力されてもよい。第1の実施の形態において、CPU130は、ワークWの検査を実行する指令とともに、ワークWの種類を特定可能なワークナンバーを受け付けるものとする。
ステップS100において、CPU130は、メインメモリ140に記憶されている複数の検査用情報1411の中から、ワークナンバーに対応する検査用情報1411を特定する。
ステップS200において、CPU130は、3次元カメラ410が撮像したワークWの3次元画像に基づいてワークWの配置状況を特定し、検査経路WLを生成する検査経路生成処理を実行する。CPU130が検査経路生成処理を実行することで、(1)3次元画像に基づいてワークWの配置状況を特定する処理と、(2)3次元画像に基づいて特定した配置状況に応じてワークWに設定された各計測点Wpについての法線Vを決定する処理とが行われることとなる。
ステップS300において、CPU130は、検査箇所があるか否かを判断する。具体的には、CPU130は、検査が済んでいない計測点Wpがあるか否かを判断する。全ての計測点Wpについて検査が済んでいる場合には(ステップS300においてNO)、CPU130は、検査処理を終了する。検査が済んでいない計測点Wpがある場合には(ステップS300においてYES)、CPU130は、制御をステップS310に切り替える。
ステップS310において、CPU130は、検査が済んでいない一の計測点Wpを決める。
ステップS400において、CPU130は、法線補正処理を実行する。法線補正処理は、検査が済んでいない一の計測点Wpについての法線Vを補正する処理である。CPU130が法線補正処理を実行することで、(3)決定された法線V上に2次元カメラ310を位置決めした状態で当該2次元カメラ310が撮像した2次元画像に基づいてワークWの配置状況を特定する処理と、(4)決定された法線Vを2次元画像に基づいて特定したワークWの配置状況に応じて補正する処理とが行われることとなる。
ステップS500において、CPU130は、ピント調整処理を実行する。ピント調整処理は、2次元カメラ310のピントを計測点Wpに合わせる処理である。CPU130がピント調整処理を実行することで、決定した法線V上で2次元カメラ310のピントを計測点Wpに合わせる処理が行われることとなる。
ステップS600において、CPU130は、検査実行処理を実行する。検査実行処理は、計測点Wpにおける検査を実行する処理である。CPU130が検査実行処理を実行することで、2次元カメラ310のピントを計測点Wpに合わせた状態で検査を実行する処理が行なわれることとなる。
[E.画像処理装置の機能構成]
図5を参照して、画像処理装置2の機能全体について説明する。図5は、画像処理装置2の機能構成の一例を示す図である。上述のように、画像処理装置2は、管理装置100、ロボット制御部200、2次元画像処理装置300、および3次元画像処理装置400を含む。
管理装置100は、記憶部であるメインメモリ140を含む。メインメモリ140は、検査用情報1411を格納する機能構成として格納部141を含む。また、管理装置100は、他の機能構成として、位置決定部131、経路生成部132、法線補正部133、法線軌道生成部134、ピント位置決定部135、円弧軌道生成部136、検査結果判定部137、および検査結果登録部138を含む。位置決定部131、経路生成部132、法線補正部133、法線軌道生成部134、ピント位置決定部135、円弧軌道生成部136、検査結果判定部137、および検査結果登録部138は、典型的には、管理装置100のCPUがプログラムを実行することで実現される。
ロボット制御部200は、機能構成として、ワールド座標系における2次元カメラ310の位置姿勢の情報を、ロボット座標系における2次元カメラ310の位置姿勢の情報に変換する変換部220を備える。具体的に、変換部は、ワールド座標系の位置座標(Xw,Yw,Zw)からロボット座標系の位置座標(Xr,Yr,Zr)に変換するとともに、ワールド座標系の向きに関する情報(Nw)をロボット座標系の向きに関する情報(Nr)に変換する。ここで、向きに関する情報は、たとえばベクトルによって示される。なお、角度によって示されてもよい。
2次元画像処理装置300は、画像処理エンジン330を含む。画像処理エンジン330は、機能構成として、特定部331、合焦度算出部332、および特徴量算出部333を含む。
3次元画像処理装置400は、画像処理エンジン430を含む。画像処理エンジン430は、機能構成として、特定部431を含む。
なお、図5に示す画像処理装置2の機能構成のうち、一部または全部の機能をASL(Application Sub-Layer)やFPGA(Field Programmable Gate Array)などのハードワイヤード回路を用いて実現してもよい。なお、管理装置100、ロボット制御部200、2次元画像処理装置300および3次元画像処理装置400の各装置の機能の一部または全部の機能は他の装置に実装されてもよい。
格納部141は、入力装置120から入力された検査経路WLに関する情報を格納する。CPU130は、入力装置120から検査経路WLに関する情報が入力されたときに、格納部141に情報を記録する。なお、格納部141に記憶されている情報は、入力装置120から入力された情報に限られず、メモリカード171または/およびハードディスク150から読み出された情報を含む。検査経路WLに関する情報としては、たとえば、各計測点Wpの3DCAD上の座標位置(Xm,Ym,Zm)および各計測点Wpについての法線ベクトル(Nm)が含まれる。
位置決定部131は、経路生成部132、法線補正部133、法線軌道生成部134、ピント位置決定部135および円弧軌道生成部136のそれぞれから送られる2次元カメラ310の位置および向きに関する情報から、2次元カメラ310のワールド座標系における位置および向きを決定する。位置決定部131は、2次元カメラ310のワールド座標系での位置および向きに関する情報をロボット制御部200に送信する。
3次元画像処理装置400の特定部431は、ラインL上によって提供されたワークWの配置状況を3次元画像から特定する。一例として、特定部431は、3次元パータンマッチングやICP(Iterative Closest Point)などの3次元画像処理によりワークWの配置状況を算出する。特定部431によって計測されたワークWの位置は、典型的には、3次元カメラ410におけるカメラ座標系の座標値(Xc3,Yc3,Zc3)[pixcel]で表される。また、特定部431によって計測されたワークWの向きは、典型的には、3次元カメラ410におけるカメラ座標系のx軸、y軸、z軸周りの回転角(θxc3,θyc3,θzc3)[ラジアン]で表される。特定部431によって計測されたワークWの位置および傾きは管理装置100に送られる。
経路生成部132は、特定部431から送られた3次元カメラ410のカメラ座標系におけるワークWの位置および向き、ならびに、格納部141に格納されたワークWの検査用情報1411などに基づいて検査経路WLを生成する。検査経路WLは、典型的には、ワールド座標系の座標位置(Xw,Yw,Zw)[mm]および法線ベクトル(Nw)によって表現される。つまり、経路生成部132は、3次元画像に基づいて特定された配置状況に応じてワークWに設定された各計測点Wpについての法線Vを決定する。
また、経路生成部132は、検査の開始および終了を管理する。具体的には、検査の開始指示を受けたことに基づいて、検査経路WLを生成する。経路生成部132は、生成した検査経路WLに基づいて2次元カメラ310の位置および向き(Xw,Yw,Zw,Nw)を決定し、位置決定部131に指示を出す。また、経路生成部132は、一の計測点について検査が終了したことを示す終了信号を受けて、次の計測点Wpに2次元カメラ310を位置決めするために2次元カメラ310の位置および向き(Xw,Yw,Zw)を決定し、位置決定部131に指示を出す。経路生成部132は、全ての計測点Wpについて終了信号を受け付けたことに基づいて、検査を終了する。
このように、第1の実施の形態においては、経路生成部132が、検査の終了を示す終了信号を受けて、順次、2次元カメラ310を動かすようにロボット制御部200に指示を出す。そのため、ユーザが計測点における検査が完了したことを確認し、確認した上で次の計測点Wpにおける検査を開始することを管理装置100に指示する必要がない。つまり、第1の実施の形態にかかる画像処理システムSYSは、経路生成部132を備えることによって、ユーザの操作性が向上する。
2次元画像処理装置300の特定部331は、経路生成部132によって決定された計測点Wpの法線Vを補正するための情報を2次元画像から特定する。一例として、特定部331は、パターンマッチングなどの画像処理により計測点Wpの法線Vを補正するための情報を算出する。ここで、計測点Wpの法線Vを補正するための情報とは、計測点Wpの位置に関する情報である。特定部431によって算出された計測点Wpの位置は、典型的には、2次元カメラ310におけるカメラ座標系の座標値(Xc2,Yc2)[pixcel]と、法線を軸とした場合の軸回りの回転角θc2[ラジアン]とで表される。特定部331によって計測された計測点Wpの位置に関する情報は管理装置100に送られる。
法線補正部133は、経路生成部132によって決定された計測点Wpの法線Vを補正する。具体的には、法線補正部133は、特定部331によって計測された計測点Wpの位置に関する情報に基づいて、計測点Wpの法線Vを特定する。つまり、法線補正部133は、間接的には、2次元画像に基づいて計測点Wpの法線Vを特定する。以下、2次元画像に基づいて特定された計測点Wpの法線Vを「計測された計測点Wpの法線V」(実測値)ともいう。一方、2次元カメラ310の位置決めをするにあたって参照された計測点Wpの法線Vを「決定された計測点Wpの法線V」(指定値)ともいう。
法線補正部133は、計測された計測点Wpの法線Vと決定された計測点Wpの法線Vとの乖離値を算出し、その乖離値に基づいて決定された計測点Wpの位置を補正し、計測点Wpの位置を再度決定する。法線補正部133は、決定した計測点Wpの位置に基づいて2次元カメラ310の位置および向き(Xw,Yw,Zw,Nw)を決定し、位置決定部131に送信する。法線補正部133は、乖離値が予め定められた値以下になったことに基づいて、計測点Wpの位置および法線ベクトルを決定する。法線補正部133は、決定した計測点Wpの位置および法線ベクトル(Xw,Yw,Zw,Nw)を法線軌道生成部134に送信する。
法線軌道生成部134は、受信した計測点Wpの位置および法線ベクトルに基づいて、2次元カメラ310の光軸Oと計測点Wpについての法線Vとを一致させた状態で、2次元カメラ310と計測点Wpとの間の距離を変化させる2次元カメラ310の法線軌道(Xw(t),Yw(t),Zw(t))を生成する。法線軌道生成部134は、生成した法線軌道、移動させる範囲などを位置決定部131およびピント位置決定部135に送信する。
合焦度算出部332は、2次元画像から合焦度aを算出するとともに、当該2次元画像を2次元カメラ310が撮像した時間tとの関係a(t)をピント位置決定部135に送信する。
ピント位置決定部135は、合焦度算出部332から送信された2次元画像の合焦度a(t)および法線軌道生成部134から送信された法線軌道などの情報から、合焦度aが最も高くなる位置を特定する。ピント位置決定部135は特定した位置から必要に応じて法線軌道生成部134に移動範囲を指定して法線軌道を生成するための指示を出す。ピント位置決定部135は、ピント位置を決定するための十分な情報を合焦度算出部332から得られたことに基づいて、ピント位置(Xw,Yw,Zw)を決定し、円弧軌道生成部136に送信する。
円弧軌道生成部136は、ピント位置決定部135から送られたピント位置における2次元カメラ310と計測点Wpとの距離を保った状態で計測点についての法線Vと2次元カメラ310の光軸Oとのなす角度が変わるように円弧軌道を生成する。円弧軌道生成部136は2次元カメラ310の光軸Oと計測点Wpとが交わるように2次元カメラ310の位置および向きについて円弧軌道(Xw(t),Yw(t),Zw(t)、Nw(t))を生成する。円弧軌道生成部136は、生成した円弧軌道と、移動させる範囲などを位置決定部131および検査結果判定部137に送信する。
特徴量算出部333は、計測点ごとに定められた検査を実行するための特徴量bを算出する。特徴量算出部333は、検査内容に対応する特徴量bを2次元画像から算出する。特徴量bの算出方法は、たとえば、ワークWの種類と検査内容とから決定されてもよい。特徴量算出部333は、算出した特徴量bと当該2次元画像を2次元カメラ310が撮像した時間tとの関係b(t)を検査結果判定部137に送信する。
検査結果判定部137は、2次元画像の特徴量b(t)および円弧軌道生成部136から送信された円弧軌道などの情報から、特徴量bが増加する方向を特定する。特徴量bが増加する方向を円弧軌道生成部136に送信する。円弧軌道生成部136は、2次元カメラ310を動かすことができる範囲内で、特徴量bが増加する方向に2次元カメラ310を動かすことができる場合は、円弧軌道などを生成する。検査結果判定部137は、2次元カメラ310を動かすことができる範囲内における特徴量bを得た場合に、特徴量bの最大値を特定し、最大値が予め定められた規定値以上であるか否かに基づいて、検査結果を判断する。検査結果判定部137は、得られた検査結果を検査結果登録部138に送信する。
検査結果登録部138は、検査結果判定部137から送られた検査結果を出力するとともに、終了信号を経路生成部132に送信する。出力された検査結果はメインメモリ140の所定領域に記憶される。検査結果登録部138は、検査結果をメインメモリ140に記憶するとともに、表示装置110に検査結果を表示させてもよい。
[F.検査経路生成処理]
図6および図7を参照して、管理装置100のCPU130が実行する検査経路生成処理(ステップS200、図4参照)について詳細に説明する。図6は、検査経路生成処理のフローチャートである。図7は、検査経路生成処理の実行において機能する画像処理装置2の機能構成の一例を示す図である。なお、図7においては、ワークWの形状を図1および図3に比べて簡略化して記載している。
CPU130が検査経路生成処理を実行することで、ワークWの配置状況が特定されるとともに、特定されたワークWの配置状況に応じて、ワークWに設定された各計測点Wpについての法線Vが特定される。
図4に示すように、検査経路生成処理(ステップS200)は、ワークナンバーに対応する検査用情報1411がステップS100において特定された後、実行される。検査用情報1411はたとえば、メインメモリ140に設けられた格納部141にワークナンバーごとに記憶されている。たとえば、検査用情報1411としては、認識用CADモデルならびに、計測点ナンバー(No.i)ごとに計測点Wpの3DCAD上での座標値(Xmi,Ymi,Zmi)、大きさを所定値とした法線ベクトル(Nmi)、検査項目、およびレファレンスモデル画像(Ii)が格納部141に記憶されている(図7参照)。計測点No.i(i=1,2,・・・)は、計測順序を示しており、経路生成部132は、No.iの計測点の次にNo.(i+1)の計測点Wpについて検査を実行するように制御する。
ここで、レファレンスモデル画像(Ii)とは、計測点の基準画像であって、2次元カメラ310の光軸Oと、No.iの計測点Wpについての法線Vとが一致している場合に2次元カメラ310の撮像領域内に含まれる基準となる画像であればよい。また、レファレンスモデル画像(Ii)は、典型的には、認識用CADモデルからCG(Computer Graphics)レンダリングによって生成される。なお、レファレンスモデル画像(Ii)は、ワークWを実際に撮像した画像から生成してもよい。
ワークWの検査用情報1411が特定された後、ステップS201において、CPU130は、3次元画像処理装置400に、特定された検査用情報1411の認識用CADモデルを送る。3次元画像処理装置400は、画像処理エンジン430の記憶部432に認識用CADモデルを一時的に記憶する。なお、3次元画像処理装置400は、ワークナンバーごとに認識用CADモデルを予め記憶していてもよい。この場合、ステップS201において、CPU130は、ワークナンバーだけを3次元画像処理装置400に送信する。
ステップS202において、CPU130は、3次元画像処理装置400にワークWの配置状況を特定することを指示する。
図7を参照して、3次元画像処理装置400が実行するワークWの配置状況の特定方法を説明する。3次元画像処理装置400の特定部431は、ワークWの配置状況を特定することの指示を受け、撮像制御部420に3次元画像を取得することを指示する。撮像制御部420は、取得した3次元画像を画像処理エンジン430の格納部433に格納する。特定部431は、格納部433に記憶された3次元画像内において、記憶部432に記憶された認識用CADモデルと類似する画像領域を探索する。特定部431は、探索した画像領域から、3次元画像内におけるワークWの位置(Xc3,Yc3,Zc3)と3次元画像内におけるワークWの向き(θxc3,θyc3,θzc3)とを算出する。特定部431は、算出した3次元画像内におけるワークWの位置および向きを管理装置100に送信する。
図6に戻って検査経路生成処理について説明する。3次元画像処理装置400からワークWの位置およびワークWの向きに関する情報を受け、ステップS203において、CPU130は、グローバル座標系におけるワークWの配置状況を特定する。具体的には、CPU130の機能構成に含まれる変換部139(図7参照)が、カメラ座標系の値(Xc3,Yc3,Zc3,θxc3,θyc3,θzc3)を3次元カメラ410の座標値(Xw0,Yw0,Zw0)および予め定められた座標変換式に基づいてグローバル座標系の値(Xw,Yw,Zw,θxw,θyw,θzw)に変換する。これにより、図7に示すように、ラインLによって提供されたワークWについての検査経路WLが生成される。
ステップS204において、CPU130は、法線Vを決定することで検査経路WLを生成して、検査処理に戻る。具体的には、経路生成部132(図7参照)が、格納部141に格納された検査用情報1411のうち、計測点Wpiごとの座標(Xmi,Ymi,Zmi)および法線ベクトル(Nmi)をグローバル座標系におけるワークWの位置(Xw,Yw,Zw)および向き(θxw,θyw,θzw)ならびに予め定められた変換式に基づいてグローバルワーク座標系の座標値(Xwi,Ywi,Zwi)および法線ベクトル(Nwi)に変換する。グローバル座標系における計測点Wpの座標値および法線ベクトルが算出されることで法線Vが決定する。また、グローバル座標系における計測点Wpの座標値および法線ベクトルが算出されることで検査経路WLも生成されることとなる。経路生成部132は、格納部141の検査用情報1411を生成した検査経路の情報に更新する。経路生成部132は、更新した情報をメインメモリ140の第1記憶部142(図9参照)に記憶する。
このように、CPU130が検査経路生成処理を実行することで、3次元画像処理装置400が3次元画像に基づいてワークWの配置状況を特定する。また、CPU130が検査経路生成処理を実行することで、ワークWに設定された各計測点Wpについて、ワールド座標系における各計測点Wpの位置および法線ベクトルが算出される。つまり、CPU130が検査経路生成処理を実行することで、特定したワークWの配置状況に応じてワークWに設定された各計測点Wpについての法線Vが決まる。
[G.法線補正処理]
図8および図9を参照して、管理装置100のCPU130が実行する法線補正処理(ステップS400、図4参照)について詳細に説明する。図8は、法線補正処理のフローチャートである。図9は、法線補正処理の実行において機能する画像処理装置2の機能構成の一例を示す図である。なお、図9においては、ワークWの形状を図1および図3に比べて簡略化して記載している。
ステップS401において、CPU130は、2次元画像処理装置300にレファレンスモデル画像を送る。具体的には、経路生成部132がステップS310において決めた計測点Wpについてのレファレンスモデル画像を第1記憶部142から特定し、2次元カメラI/F183を介して2次元画像処理装置300に送信する。2次元画像処理装置300は、画像処理エンジン330の記憶部334にレファレンスモデル画像を一時的に記憶する。なお、2次元画像処理装置300は、計測点ごとにレファレンスモデル画像を予め記憶していてもよい。この場合、ステップS401において、CPU130は、計測点ナンバーだけを2次元画像処理装置300に送信する。
ステップS402において、CPU130は、第1記憶部142に記憶された計測点Wpの位置および法線ベクトルから2次元カメラ310の位置および向きを決定する。具体的には、経路生成部132は、ステップS310において決めた計測点Wpについてのワールド座標系の座標位置および法線ベクトルを第1記憶部142から特定する。経路生成部132は、特定した法線ベクトルと2次元カメラ310の光軸Oとが一致するように2次元カメラ310の向きを決定する。また、経路生成部132は、計測点Wpについての法線V上に2次元カメラ310が位置し、かつ、2次元カメラ310と計測点Wpとの距離が予め定められた距離となるように2次元カメラ310の位置を決定する。ここで、予め定められた距離とは、2次元カメラ310の焦点距離から算出される距離であって、理論上、計測点に2次元カメラ310のピントが合う距離である。
ステップS403において、CPU130は、ロボット制御部200に動作を指示する。具体的には、経路生成部132は、決定した2次元カメラ310の位置(Xw,Yw,Zw)および向き(Nw)を位置決定部131に送信する。位置決定部131は、ロボットI/F182を介してロボット制御部200に2次元カメラ310の位置および向きを送信する(図9参照)。
ステップS404において、CPU130は、2次元画像処理装置300に、計測点Wpの法線を特定することを指示する。
図9を参照して、2次元画像処理装置300が実行する計測点Wpの法線の特定方法を説明する。2次元画像処理装置300の特定部331は、計測点Wpの法線を特定することの指示を受け、撮像制御部320に2次元画像を取得することを指示する。撮像制御部320は、取得した2次元画像を画像処理エンジン330の格納部335に格納する。
特定部331は、格納部335に記憶された2次元画像内において、記憶部334に記憶されたレファレンスモデル画像と類似する画像領域を探索する。特定部331は、探索した画像領域から、2次元画像内における計測点Wpの位置(Xc2,Yc2)と2次元画像内における計測点Wpの向き(θc2)とを算出する。特定部331は、算出した2次元画像内における計測点Wpの位置および向きを管理装置100に送信する。
図8に戻って法線補正処理について説明する。2次元画像処理装置300から計測点Wpの位置および計測点Wpの向きに関する情報を受け、ステップS405において、CPU130は、グローバル座標系における計測点Wpの位置および計測点Wpの法線ベクトルを特定する。具体的には、CPU130の機能構成に含まれる変換部139(図9参照)が、カメラ座標系の値(Xc2,Yc2,θc2)を位置決定部131がロボット制御部200に送った2次元カメラ310の位置(Xw,Yw,Zw)および向き(Nw)、並びに、予め定められた座標変換式に基づいてグローバル座標系の値(Xw,Yw,Zw,Nw)に変換する。これにより、計測された計測点Wpの法線V(実測値)が特定される。
ステップS406において、CPU130は乖離値を決定する。乖離値とは、計測された計測点Wpの法線V(実測値)と決定された計測点の法線(指定値)とのズレを示す値である。ここで、2次元カメラ310の位置および向きは、決定された計測点Wpの法線V(指定値)と2次元カメラ310の光軸Oとが一致するように決定される。よって、乖離値とは、計測された計測点Wpの法線Vと2次元カメラ310の光軸Oとのズレを示す値でもある。乖離値は、たとえば、ベクトル(ΔN)などで示される。具体的には、法線補正部133の機能構成に含まれる乖離値算出部1330(図9参照)が、2次元カメラ310の位置および向きと、計測された計測点Wpの法線Wpの法線V(実測値)とから、乖離値(ΔN)を算出する。ここで、第1の実施の形態においては、2次元画像内における計測点Wpの向き(θc2)とは、法線を軸とした軸周りの回転角である。そのため、変換部139によって変換されたグローバル座標系における計測点Wpの法線ベクトルと、決定された計測点の法線ベクトルとは一致する。つまり、計測点Wpの法線V(実測値)と決定された計測点の法線(指定値)とのズレとは、法線ベクトルが一致しないことに起因するズレではなく、計測点Wpの位置座標が一致しないことに起因するズレである。
ステップS407において、CPU130は、乖離値が予め定められた第1閾値以下であるかを判断する。乖離値が第1閾値以下ではない場合には(ステップS407においてNO)、CPU130は、制御をステップS408に切り替える。
ステップS408において、CPU130は、乖離値から補正量を算出する。具体的には、法線補正部133の機能構成に含まれる補正量算出部1332(図9参照)が、乖離値(ΔN)に基づいて2次元カメラ310を移動させる補正量(ΔX,ΔY,ΔZ,Δθx,Δθy,Δθz)を決定する。これにより、2次元カメラ310の光軸Oと、計測された計測点Wpの法線V(実測値)とを一致させるために必要な補正量が算出されることになる。
ステップS409において、CPU130は、補正量から2次元カメラ310の位置および向きを決定する。具体的には、補正量算出部1332は、算出した補正量と、ステップS403において位置決定部131が指示した2次元カメラ310の位置および向きとから、2次元カメラ310の位置および向き(Xw,Yw,Zw,Nw)を決定する。このとき、法線補正部133の機能構成に含まれる更新部1331は、補正量に基づいて第1記憶部142に記憶された計測点Wpの位置を補正し、補正した計測点Wpの位置に第1記憶部142の情報を更新する。これにより、計測された計測点Wpの法線V(実測値)が決定された計測点Wpの法線V(指示値)として、第1記憶部142に記憶される。
CPU130は、乖離値が第1閾値以下になるまで(ステップS407においてYES)、ステップS403からステップS409を繰り返す。乖離値が第1閾値以下である場合には(ステップS407においてYES)、CPU130は、制御をステップS410に切り替える。
CPU130は、ステップS410において、補正後の計測点Wpの法線Vを決定する。具体的には、ステップS409において更新部1331が更新した第1記憶部142の情報を補正後の計測点Wpの位置および法線ベクトルとして決定する。
このように、画像処理システムSYSの画像処理装置2に含まれる特定部431は、3次元カメラ410によって撮像された3次元画像内において、記憶部432に記憶された認識用CADモデルと類似する画像領域を探索する。画像処理システムSYSの画像処理装置2に含まれる経路生成部132は、特定部431によって探索された画像領域から得られる情報と、格納部141に格納された3DCAD上での計測点Wpごとの座標(Xmi,Ymi,Zmi)および法線ベクトル(Nmi)をグローバルワーク座標系の座標値(Xwi,Ywi,Zwi)および法線ベクトル(Nwi)に変換する。これにより、特定部431はワークWに設定された各計測点Wpについての法線Vを決定する。
さらに、画像処理システムSYSにおいては、特定部431が決定した法線V上に2次元カメラ310を位置決めした状態で2次元カメラ310によって撮像された2次元画像内において、特定部331は、記憶部334に記憶されたレファレンスモデル画像と類似する画像領域を探索する。画像処理システムSYSの画像処理装置2に含まれる法線補正部133は、特定部331によって探索された画像領域から得られる情報に基づいて、特定部431が決定した法線Vを補正して法線Vを決定する。
つまり、第1の実施の形態に係る画像処理システムSYSにおいては、ワークWに設定された各計測点Wpについての法線Vを3次元画像から得られる情報に基づいて決定した上で、さらに、2次元画像から得られる情報に基づいて補正する。つまり、ロボット210の制御誤差によって生じる、2次元カメラ310の光軸Oと、計測点Wpについての法線Vとのズレを2次元画像から得られる情報に基づいて補正することができる。また、ワークWのCADモデルとラインLによって提供されたワークWとの誤差によって生じる、2次元カメラ310の光軸Oと計測点Wpについての法線Vとのズレを、2次元画像から得られる情報に基づいて補正することができる。そのため、第1の実施の形態に係る画像処理システムSYSを用いることで、より正確に2次元カメラ310とワークWとの位置関係を調整することができる。
なお、第1の実施の形態においては、2次元画像内における計測点Wpの向き(θc2)とは、法線を軸とした軸周りの回転角であるとした。しかし、2次元画像処理装置300は、レファレンスモデル画像と類似する画像領域を探索し、探索した結果得られた画像領域内の画像の歪みから、計測点Wpが位置する平面とワークWが設置された面との角度を求めてもよい。このような場合にあっては、CPU130は、法線ベクトルのズレも検出することができる。
[H.ピント調整処理]
図10および図11を参照して、管理装置100のCPU130が実行するピント位置調整処理(ステップS500、図4参照)について詳細に説明する。図10は、ピント位置調整処理のフローチャートである。図11は、ピント位置調整処理の実行において機能する画像処理装置2の機能構成の一例を示す図である。なお、図11においては、ワークWの形状を図1および図3に比べて簡略化して記載している。
ステップS501において、CPU130は、2次元カメラ310を移動させる軌道を生成する。具体的には、法線軌道生成部134は、法線補正処理(ステップS400)において決定された補正後の法線Vと2次元カメラ310の光軸Oとを一致させた状態で、2次元カメラ310と計測点Wpとの距離を変化させる2次元カメラ310の法線軌道(Xw(t),Yw(t),Zw(t),Nw)を生成する。
ステップS502において、CPU130は、2次元カメラ310の移動範囲を決定する。移動範囲は、初期値が決定されており、ステップS502〜ステップS506を繰り返すことで徐々に変化する。具体的には、ステップS505において得られた合焦度aと2次元カメラ310の位置との関係から、合焦度aが増加する方向に2次元カメラ310が動くように移動範囲を決定する。
ステップS503において、CPU130は、ロボット制御部200に2次元カメラ310を動かすことを指示する。具体的には、CPU130は、ステップS502で決定した移動範囲内であって、ステップS501の軌道上を2次元カメラ310が一定の速度で動くようにロボット制御部200に指示する。ここで2次元カメラ310を動かす速度は、1回撮像するために要する時間で動く距離が2次元カメラ310の焦点深度以下となる速度である。
ステップS504において、CPU130は、2次元画像処理装置300に合焦度aを算出することを指示する。具体的には、CPU130は、ステップS503においてCPU130がロボット制御部200に指示した移動範囲内を2次元カメラ310が動いている第1期間中に2次元カメラ310が撮像した2次元画像から2次元カメラ310の合焦度aを算出することを2次元画像処理装置300に指示する。
図11を参照して、2次元画像処理装置300が実行する合焦度aの算出方法を説明する。2次元画像処理装置300の合焦度算出部332は、合焦度aを算出することの指示を受け、撮像制御部320に第1期間中に撮像された2次元画像を取得することを指示する。撮像制御部320は、取得した2次元画像を画像処理エンジン330の格納部335に格納する。合焦度算出部332は、格納部335に記憶された2次元画像の合焦度aを算出するための所定の画像処理を2次元画像に対して実行する。たとえば、2次元画像の濃度偏差を合焦度aに関する特徴量とし、算出した濃度偏差を合焦度aとしてもよい。合焦度算出部332は、算出した合焦度aと当該2次元画像を2次元カメラ310が撮像した時間tとの関係a(t)をピント位置決定部135に送信する。
図10に戻ってピント調整処理について説明する。2次元画像処理装置300から合焦度aと当該2次元画像を2次元カメラ310が撮像した時間tとの関係a(t)を受け、ステップS505において、CPU130は、合焦度aと2次元カメラ310の位置との関係を記憶する。具体的には、CPU130は、ステップS503において指示した2次元カメラ310の移動範囲などから、撮像した時間tにおける2次元カメラ310の位置を特定する。特定した2次元カメラ310の位置(Xw(t)、Yw(t),Zw(t))と合焦度a(t)との関係を第2記憶部143に記憶する。
ステップS506において、CPU130は、合焦度aが移動範囲内で極値をとるか否かを判断する。合焦度aが移動範囲内で極値を取らない場合には(ステップS506においてNO)、CPU130は、合焦度aが移動範囲内で極値をとるまでステップS502〜ステップS506を繰り返す。ここで、CPU130は、ステップS502において移動範囲を決定する際に、2次元カメラ310の始点位置をワークWから離れた位置にする、あるいは、近くにすることで、合焦度aが極値を取る位置を探す。なお、2次元カメラ310の始点位置をワークWに近い位置に設定する場合には、ワークWと2次元カメラ310およびロボット210とが接触しないような位置に設定する。
合焦度aが移動範囲内で極値をとる場合には(ステップS506においてYES)、CPU130は、ステップS507に制御を切り換える。
ステップS507において、合焦度aが極値をとる位置をピント位置に決定し、検査処理に戻る。具体的には、ピント位置決定部135は、記憶部に記憶された合焦度aのうちの最も高い合焦度amaxとなる2次元画像を撮像したときの2次元カメラ310の位置をピント位置(Xw,Yw,Zw)に決定する(図11参照)。
このように、CPU130がピント調整処理を実行することで、決定した法線V上で2次元カメラ310のピントを計測点Wpに合わせる処理が行われることとなる。
[I.検査実行処理]
図12〜図14を参照して、管理装置100のCPU130が実行する検査実行処理(ステップS600、図4参照)について詳細に説明する。図12は、検査実行処理のフローチャートである。図13は、検査実行処理の実行において機能する画像処理装置2の機能構成の一例を示す図である。図14は、2次元カメラ310の円弧軌道の一例を示す図である。なお、図13においては、ワークWの形状を図1および図3に比べて簡略化して記載している。
ステップS601において、CPU130は、計測点の検査項目を特定する。具体的には、第1記憶部142に記憶されている計測点Wpと検査項目との対応関係に基づいて、検査項目を特定する。
ステップS602において、CPU130は、検査項目が検査Aであるか否かを判断する。ここで、検査Aとは、ワークWの表面に正確に印字がされているかなどの2次元カメラ310が撮像した方向によって検査結果が変わるおそれのある検査をいう。検査Aである場合(ステップS602においてYES)、CPU130は、ステップS615に制御を切り換える。
ステップS615において、CPU130は、ピント位置で検査を実行する。具体的には、検査結果判定部137は、ピント位置調整処理(ステップS500)において決定したピント位置で検査Aを実行する。
検査Aではない場合(ステップS602においてNO)、CPU130は、ステップS603において、ピント位置を中心とする円弧軌道を生成する。具体的には、円弧軌道生成部136が、ピント位置決定部135が決定した2次元カメラ310の位置と計測点Wpとの距離を保った状態で計測点Wpについての法線Vと2次元カメラ310の光軸Oとのなす角度が0から予め定められた値まで変化するように円弧軌道(Xw(t),Yw(t),Zw(t),Nw(t))を生成する。ここで、円弧軌道について、図14を用いて説明する。円弧軌道生成部136は、図14(a)に示すように、ピント位置決定部135において決定した2次元カメラ310の位置Cと計測点Wpとの距離を半径rとした球の表面上を2次元カメラ310が位置するように円弧軌道を生成する。円弧軌道は図14(b)に示すように、2次元カメラ310の光軸Oと法線Vとの角度を一定にして計測点Wpの周りを一周させた後に、角度を変えて再度一周させることを繰り返す軌道であってもよい。また、図14(c)に示すように、2次元カメラ310の光軸Oと法線Vとの角度を徐々に変えながら計測点Wpの周囲をらせん状に移動する軌道であってもよい。
図12に戻って検査実行処理について説明する。ステップS604において、CPU130は、2次元カメラ310の移動範囲を決定する。移動範囲は、たとえば、計測点Wpの周囲を少なくとも一周する範囲である。
ステップS605において、CPU130は、ロボット制御部200に2次元カメラ310を動かすことを指示する。具体的には、CPU130は、ステップS604で決定した移動範囲内であって、ステップS601の軌道上を2次元カメラ310が一定の速度で動くようにロボット制御部200に指示する。
ステップS606において、CPU130は、2次元画像処理装置300に検査内容に対応する特徴量bを算出することを指示する。具体的には、CPU130は、ステップS605においてCPU130がロボット制御部200に指示した移動範囲内を2次元カメラ310が動いている第2期間中に2次元カメラ310が撮像した2次元画像から検査内容ごとに予め定められている特徴量bを算出することを2次元画像処理装置300に指示する。
図13を参照して、2次元画像処理装置300が実行する特徴量bの算出方法を説明する。2次元画像処理装置300の特徴量算出部333は、特徴量bを算出することの指示を受け、撮像制御部320に第2期間中に撮像された2次元画像を取得することを指示する。撮像制御部320は、取得した2次元画像を画像処理エンジン330の格納部335に格納する。特徴量算出部333は、格納部335に記憶された2次元画像の特徴量bを算出するための所定の画像処理を2次元画像に対して実行する。特徴量算出部333は、算出した特徴量bと当該2次元画像を2次元カメラ310が撮像した時間tとの関係b(t)を検査結果判定部137に送信する。
特徴量bは、外観検査において外観に異常があるか否かを判断する指標となる量である。たとえば、外観に縞模様などの特定パターンが施されているワークWに対してキズ検査を実行するような場合、特徴量算出部333は、2次元画像に対して特定パターンを除去するための処理を実行した後、欠陥を示す領域を特定するためのラベリング処理を実行する。これにより、特徴量算出部333は、欠陥面積または欠陥長さを特徴量bとして算出する。なお、他の方法で特徴量bを算出してもよい。
たとえば、特徴量算出部333は、2次元画像を複数領域に分割し、隣接した領域間の色差から欠陥度を算出し、ラベリング処理を実行することで欠陥度が規定値以上となる領域を特定し、当該領域から欠陥面積または欠陥長さを特徴量bとして算出してもよい。この方法は、典型的には、細かなキズを検出することを目的とした場合に用いられる方法である。
なお、特徴量算出部333は次の方法を用いて特徴量bを算出してもよい。特徴量算出部333は、2次元画像に対して公知のエッジ抽出処理を行った後、公知の膨張処理を行う。特徴量算出部333は、膨張処理後に欠陥を示す領域を特定するためのラベリング処理を実行することで、欠陥面積または欠陥長さを特徴量bとして算出する。この方法は、典型的には、打痕、凹みなどを検出することを目的とした場合に用いられる方法である。
なお、特徴量bを算出する方法は、外観検査において外観に異常があるか否かを判断する指標となる量を抽出するための方法であればよく、開示した方法に限られるものではない。
図12に戻って検査実行処理について説明する。2次元画像処理装置300から特徴量bと当該2次元画像を2次元カメラ310が撮像した時間tとの関係b(t)を受け、ステップS607において、CPU130は、特徴量bと2次元カメラ310の位置との関係を記憶する。具体的には、CPU130は、ステップS505において指示した2次元カメラ310の移動範囲などから、撮像した時間tにおける2次元カメラ310の位置および向きを特定する。特定した2次元カメラ310の位置および向き(Xw(t)、Yw(t),Zw(t),Nw(t))と合焦度a(t)との関係を第3記憶部144に記憶する。
ステップS608において、CPU130は、特徴量bが増加する方向があるか否かを判断する。具体的には、CPU130は、移動範囲内における特徴量bの最大値と最小値を特定し、最大値と最小値との差が第3閾値以上であるか否かに基づいて判断する。CPU130は、最大値と最小値との差が第3閾値以上である場合、最小値となる位置から最大値となる位置に向かう方向を増加する方向として、特徴量bが増加する方向があると判断する。
特徴量bが増加する方向がない場合には(ステップS608においてNO)、CPU130は、ステップS616に制御を切り換える。
特徴量bが増加する方向がある場合には(ステップS609においてYES)、CPU130は、ステップS609において、特徴量bが増加する方向に向かう軌道を生成する。具体的には、CPU130は、第3記憶部144に記憶された2次元カメラ310の位置および向きの情報と、特徴量bとから、特徴量bが増加する方向を決定し、当該方向に向かう軌道を生成する。
ステップS610において、CPU130は、2次元カメラ310の移動範囲を決定する。具体的には、CPU130は、特徴量bが増加する方向に移動範囲を決定する。
ステップS611において、CPU130は、ロボット制御部200に2次元カメラ310を動かすことを指示する。具体的には、CPU130は、ステップS610で決定した移動範囲内であって、ステップS609の軌道上を2次元カメラ310が一定の速度で動くようにロボット制御部200に指示する。
ステップS612において、CPU130は、2次元画像処理装置300に検査内容に対応する特徴量bを算出することを指示する。
ステップS613において、CPU130は、特徴量bと2次元カメラ310の位置との関係を記憶する。
ステップS614において、CPU130は、移動範囲が限界値であるか否かを判定する。具体的には、CPU130は、増加方向に2次元カメラ310を移動させることが可能であるか否かを判定する。増加方向に2次元カメラ310を移動させることが可能であるかは、2次元カメラ310または/およびロボット210とワークWとが当たらないかどうか、または、ロボット210の稼働限界かどうかによって、位置決定部131が決定する。移動範囲が限界値ではない場合には(ステップS614においてNO)、CPU130は、移動範囲が限界値になるまでステップS609〜ステップS614を繰り返す。
移動範囲が限界値である場合(ステップS614においてYES)、特徴量bが増加する方向がない場合(ステップS608においてNO)、ピント位置で検査を実行した後(ステップS615の実行後)、CPU130は、ステップS616において、検査データを送信する。具体的には、CPU130は、検査結果登録部138に検査結果を送信し、登録する。CPU130は、特徴量bが増加する方向がない場合(ステップS608においてNO)、第3記憶部144に記憶された特徴量bの最大値を算出し、算出した最大値が規定値以下であるか否かを判断する。規定値以下である場合、CPU130は異常なしと判定し、検査結果として異常なし(図13中の丸印)を登録する。規定値より高い場合、CPU130は異常ありと判定し、検査結果として異常ある((図13中のバツ印)を登録する。CPU130は、移動範囲が限界値である場合(ステップS614においてYES)、第3記憶部144に記憶された特徴量bのうちの最も高い特徴量bmaxを特定し(図13参照)、特徴量bmaxが規定値以下であるか否かを判断する。規定値以下である場合、CPU130は異常なしと判定し、検査結果を登録する。規定値より高い場合、CPU130は異常ありと判定し、検査結果を登録する。ピント位置で検査を実行した後(ステップS615の実行後)である場合、CPU130は、ピント位置での検査結果を登録する。たとえば、検査結果判定部137は、2次元画像処理装置300に、ピント位置で得られた2次元画像と基準となる2次元画像とのマッチング度合いを算出するように指示し、得られたマッチング度合に応じて、異常があるか否かを判定する。
このように、第1の実施の形態に係る画像処理システムSYSにおいては、円弧軌道生成部136は、2次元カメラ310と計測点Wpとの間の距離を保った状態で計測点Wpについての法線Vと2次元カメラ310の光軸Oとのなす角度が0から予め定められた値まで変化するような円弧軌道上を生成する。CPU130は、円弧軌道生成部136が生成した円弧軌道上を2次元カメラ310が動くようにロボット制御部200に指示する。また、検査結果判定部137は、法線Vと光軸Oとのなす角度の変化に応じた特徴量bの変化に基づいて、2次元カメラ310の移動範囲を決定する。つまり、検査結果判定部137は、法線Vと光軸Oとのなす角度の変化に応じた特徴量bの変化に基づいて、2次元カメラ310とワークWとの相対的な位置関係を決定する。
検査結果判定部137が、2次元カメラ310とワークWとの位置関係を特徴量bに基づいて決定するため、特徴量bを算出する上で最適な位置で検査を実行することができる。つまり、本実施の形態に係る画像処理システムSYSを用いることで、ワークWへの光の当り具合によるハレーションが起きにくい位置で検査を実行することができる。なお、本実施の形態における特徴量bは、合焦度算出部332が合焦度aとして算出する濃度偏差であってもよい。つまり、特徴量算出部335と合焦度算出部332とを一体としてもよい。
[J.入力装置を用いた検査経路の登録方法]
図15を参照して、入力装置を用いた検査経路WLの登録方法について説明する。図15は、ユーザが入力装置120を用いて検査経路WLを入力したときの処理の一例を示す図である。図15(a)は入力装置120を用いてユーザが経路を入力した場合に、表示装置110に表示される画面の一例である。図15(b)は、法線ベクトルの作成方法を説明するための図である。
図15(a)に示すように、ユーザは表示装置110に表示されたワークの3DCADモデル上にカーソルをおき、計測点と当該検査箇所において検査したい項目を選択する。計測点を選択すると、図15(b)に示す方法で、計測点についての法線が作成される。管理装置100のCPU130は、ワークの3DCADデータに基づいて法線ベクトルを作成する。具体的には、CPU130は、計測点Wp2が位置するP1(x1、y1、z1),P2(x2、y2、z2)およびP3(x3、y3、z3)に囲まれる微小平面を特定する。CPU130は、特定した微小平面に基づいて、当該微小平面に対して垂直なベクトルを法線ベクトルNm2として算出する。
CPU130は、入力装置120によってユーザが登録した情報を格納部141に登録する。これにより、検査用情報1411が格納部141に記憶される。
このように、第1の実施の形態における画像処理システムSYSの画像処理装置2は、ワークWの設計情報であるワークの3DCADモデルを表示装置110に表示するとともに、ユーザ操作に応じて計測点Wpを設定する。そのため、第1の実施の形態における画像処理システムSYSにおいては、計測点Wpを設定する上での自由度が高い。
また、第1の実施の形態における画像処理システムSYSの画像処理装置2は、ユーザ操作に応じて設定された計測点Wpの各々について法線Vを算出することができる。そのため、ユーザは計測点Wpを設定し、検査の開始を指示するだけで、正確な検査を実行することができ、画像処理システムSYSを利用するユーザの利便性が向上する。
<第2の実施の形態>
第1の実施の形態において、ワークWの計測点Wpごとの法線を決定する場合、管理装置100は、3次元画像に基づいて経路を生成する際に決定した後、さらに2次元画像に基づいて計測点Wpごとに決定した法線Vを補正した。しかし、2次元カメラ310を用いなくてもよい。具体的には、図6および図7を参照して説明した経路生成処理によって、各計測点の3DCAD上の各計測点Wpの座標位置および各計測点Wpについての法線ベクトルがグローバル座標系に変換されて、グローバル座標系における計測点Wpの座標位置および各計測点Wpについての法線ベクトルが算出されたことをもって、計測点Wpの法線Vが決定されたとしてもよい。この場合、管理装置100は、図8に示す法線補正処理(ステップS400)を実行することなく、ピント位置調整処理(ステップS500)を実行する。
たとえば、第1の実施の形態における経路生成処理(ステップS200)および法線補正処理(ステップS400)のかわりに、図16に示す、法線決定処理(ステップS400A)を実行してもよい。図16は、第2の実施の形態に係る法線決定処理のフローチャートである。
ステップS401Aにおいて、CPU130は、3次元画像処理装置400に特定された検査用情報1411の認識用CADモデルを送る。
ステップS402Aにおいて、CPU130は、3次元画像処理装置400にワークWの配置状況を特定することを指示する。
ステップS403Aにおいて、CPU130は、グローバル座標系におけるワークWの配置状況を特定する。
ステップS404Aにおいて、CPU130は、各計測点Wpの法線Vを決定する。具体的には、格納部141に格納された検査情報のうち、計測点Wpごとの座標(Xmi,Ymi,Zmi)および法線ベクトル(Nmi)をグローバル座標系におけるワークWの位置(Xw,Yw,Zw)および向き(θxw,θyw,θzw)ならびに予め定められた変換式に基づいてグローバルワーク座標系の座標値(Xwi,Ywi,Zwi)および法線ベクトル(Nwi)に変換して、各計測点Wpの法線Vを決定する。経路生成部132は、格納部141の検査用情報1411をグローバル座標系における座標値および法線ベクトルに更新し、第1記憶部142(図9参照)に記憶する。
ここで、第2の実施の形態におけるピント調整処理のステップS501においては、ステップS404Aにより決定した法線Vに基づいて2次元カメラ310の軌道を生成する。
このように、第2の実施の形態に係る画像処理システムSYSの画像処理装置2に含まれる特定部431は、3次元カメラ410によって撮像された3次元画像内において、記憶部432に記憶された認識用CADモデルと類似する画像領域を探索する。画像処理システムSYSの画像処理装置2に含まれる経路生成部132は、特定部431によって探索された画像領域から得られる情報と、格納部141に格納された3DCAD上での計測点ごとの座標(Xmi,Ymi,Zmi)および法線ベクトル(Nmi)をグローバルワーク座標系の座標値(Xwi,Ywi,Zwi)および法線ベクトル(Nwi)に変換する。これにより、ワークWに設定された各計測点Wpについての法線Vが決まる。つまり、画像処理システムSYSにおいては、ワークWに設定された各計測点Wpについての法線Vを一度の撮像で決定することができ、早くに法線Vを決定することができる。
<第3の実施の形態>
第1および第2の実施の形態において、ロボット210は、2次元カメラ310の位置を移動させることで2次元カメラ310とワークWとの距離を変化させるものとした。しかし、図17に示すように、ロボット210は、ワークWの位置を移動させることで2次元カメラ310とワークWとの位置を変更させてもよい。図17は、第3の実施の形態に係る画像処理システムの構成を示す模式図である。ロボット210は、典型的には、SCARA型ロボットであって、ワールド座標系におけるX,Y,Z方向(図17に示す座標軸)にワークWを動かすことができる。これにより、2次元カメラ310とワークWの計測点についての法線とを一致させたうえで、2次元カメラ310のピントを合わせることができる。
なお、図17においては、SCARA型ロボットを例に挙げたが、ワークWが十分に小さい場合は、アーム型ロボットによって、ワークWの位置だけでなく、姿勢を変えることができる構成にしてもよい。また、ワークWが十分に小さい場合は、2次元カメラ310を移動させる場合に比べて、ロボット210の動作範囲が小さくなるため、早くに移動させることができる。
<変形例>
[検査用のカメラ]
第1〜第3の実施の形態において、外観検査に使用されるカメラを2次元カメラ310とした。なお、変位センサを2次元カメラ310の代わりに用いてもよい。変位センサには、光切断センサ、超音波変位センサなどを含む。変位センサを用いることで、2次元カメラを用いる場合と比較して、微細な欠陥の検出が可能になる。
[照明装置]
第1〜第3の実施の形態において、画像処理システムSYSは2次元カメラ310を円弧軌道に沿って動かすことで、ハレーションが起きにくい位置で検査を実行するとした。なお、2次元カメラ310ではなく、ワークWに光を照射する照明(図示せず)の位置または/および向きを変えることで、ハレーションの起きにくい状況で検査を実行できるようにしてもよい。つまり、円弧軌道生成部136は、2次元カメラ310の位置および向きを変化させる軌道を生成するのではなく、照明の位置または/および向きを変えるための軌道を生成してもよい。
[2次元カメラの位置決め方法]
第1〜第3の実施の形態において、検査を実行する際の2次元カメラ310の位置を決定する方法として、ピントを合わせた後に、検査内容に応じて法線Vと光軸Oとのなす角度を変化させることで、検査を実行する際に2次元カメラ310の位置として最適な位置を決定することとした。しかし、ピントを合わせながら、検査内容に応じて法線Vと光軸Oとのなす角度を変化させることで、2次元カメラ310の位置として最適な位置を決定してもよい。具体的には、2次元カメラ310を法線軌道上に沿ってわずかに動かし、動かした位置において、法線Vと光軸Oとのなす角度を変化させるようにしてもよい。画像処理装置2は、2次元画像とレファレンスモデル画像とのマッチング度合いを示す特徴量を算出し、法線Vと光軸Oとのなす角度のうち、当該特徴量に基づいて2次元カメラ310の向きである角度を決定してもよい。その後、画像処理装置2は、決定した2次元カメラ310の向きを保った状態で、ワークWと2次元カメラ310との間の距離を変化させ、2次元画像とレファレンスモデル画像とのマッチング度合いを示す特徴量から、距離を決定してもよい。
また、第1の実施の形態において、2次元カメラと3次元カメラを用いて、2次元カメラの位置決めを行うとした。また、第2の実施の形態において、3次元カメラのみを用いて検査に用いる2次元カメラの位置決めを行うとして。2次元カメラのみを用いて、ワークWに設定された各計測点Wpについての各法線Vを決定してもよい。
[基準線について]
本実施の形態において、基準線とは、計測点Wpが位置する微小平面に対して垂直な垂線である垂線とした。しかし、基準線は、ユーザによって設定可能なものであってもよい。たとえば、基準線は、撮像領域内に位置するワークが可能な限り2次元カメラ310の被写界深度内に位置するように、2次元カメラ310の向きを設定する際の基準になる線であってもよい。
図18は、基準線の変形例を示す模式図である。基準線は、たとえば、ワークWの材質と、照射光が入射する方向とに基づいて設定されてもよい。たとえば、図18(a)の基準線V1は、照明の光が2次元カメラ310の光軸に沿って照射され、かつ、ワークWの表面の材質が正反射をする材質である場合に、正反射光を入射させない位置にカメラを配置するために設定される。具体的に、基準線V1は、計測点Wp1を通るような線であって、垂線を傾斜させたように設定されている。このようにすることで、計測点Wp1を含む計測領域に入射して、その計測領域から反射する光の方向を考慮して2次元カメラ310を配置することができる。
また、基準線は、計測点Wpを含む計測領域におけるワークWの表面の形状に基づいて設定されてもよい。たとえば、図18(a)の基準線V2、基準線V3、図18(b)の基準線V5、および図18(c)の基準線V6は、各々、計測点Wp(すなわち計測点Wp2,計測点Wp3,計測点Wp5,計測点Wp6)付近が複数の面から構成されている場合に、複数の面の各々が2次元カメラ310の撮像視野に含まれるように設定される。このようにすることで、ワークWの表面形状が複雑である場合も、その形状を考慮して2次元カメラ310を配置することができる。
また、図18(b)の基準線V4は、計測点Wp4が設定されている領域を撮像視野に含めるために設定される。具体的には、基準線V5は、障害物であるワークWの表面上の凹凸を避けるように設定される。このようにすることで、ワークWの表面に凹凸があったとしても、その凹凸により視界が遮られることを予め防止することができる。
これらの基準線は、図15を用いて説明した、検査経路WLを登録する際の一連の処理において、画像処理装置2が算出してもよく、また、ユーザが計測点Wpを基準に設定してもよい。また、画像処理装置2が算出したうえで、ユーザが微調整をできるような構成であってもよい。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
好ましくは、基準線特定手段は、基準線決定手段により決定された基準線上に第1の撮像部を位置決めした状態で第1の撮像部により撮像される画像に対して、対応する計測点の基準画像に合致する部分を探索する第2の探索手段と、第2の探索手段により探索された部分の情報に基づいて、基準線決定手段により決定された基準線を補正する補正手段とをさらに含む。
検査結果判定部137が、2次元カメラ310とワークWとの位置関係を特徴量bに基づいて決定するため、特徴量bを算出する上で最適な位置で検査を実行することができる。つまり、本実施の形態に係る画像処理システムSYSを用いることで、ワークWへの光の当り具合によるハレーションが起きにくい位置で検査を実行することができる。なお、本実施の形態における特徴量bは、合焦度算出部332が合焦度aとして算出する濃度偏差であってもよい。つまり、特徴量算出部333と合焦度算出部332とを一体としてもよい。
このように、第2の実施の形態に係る画像処理システムSYSの画像処理装置2に含まれる特定部431は、3次元カメラ410によって撮像された3次元画像内において、記憶部432に記憶された認識用CADモデルと類似する画像領域を探索する。画像処理システムSYSの画像処理装置2に含まれる経路生成部132は、特定部431によって探索された画像領域から得られる情報と、格納部141に格納された3DCAD上での計測点ごとの座標(Xmi,Ymi,Zmi)および法線ベクトル(Nmi)をグローバルワーク座標系の座標値(Xwi,Ywi,Zwi)および法線ベクトル(Nwi)に変換する。これにより、ワークWに設定された各計測点Wpについての法線Vが決まる。つまり、画像処理システムSYSにおいては、ワークWに設定された各計測点Wpについての法線Vを一度の撮像で決定することができ、早くに法線Vを決定することができる。
<第3の実施の形態>
第1および第2の実施の形態において、ロボット210は、2次元カメラ310の位置を移動させることで2次元カメラ310とワークWとの距離を変化させるものとした。しかし、図17に示すように、ロボット210は、ワークWの位置を移動させることで2次元カメラ310とワークWとの距離を変更させてもよい。図17は、第3の実施の形態に係る画像処理システムの構成を示す模式図である。ロボット210は、典型的には、SCARA型ロボットであって、ワールド座標系におけるX,Y,Z方向(図17に示す座標軸)にワークWを動かすことができる。これにより、2次元カメラ310とワークWの計測点についての法線とを一致させたうえで、2次元カメラ310のピントを合わせることができる。