以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.本実施形態の手法
まず本実施形態の手法について説明する。検査対象物に対する検査(特に外観検査)は多くの状況で用いられている。外観検査(目視検査)は、人間の目で見て観察する検査方法が基本であるが、検査についてのユーザーの省力化や、検査の高精度化等の観点から、検査を検査装置により自動化する手法が提案されるようになっている。
ここでの検査装置とは、専用の装置であってもよく、例えば専用の検査装置としては図5に示したように、撮像部CAと、処理部PRと、インターフェース部IFと、を含む装置が考えられる。この場合、検査装置は、撮像部CAを用いて検査対象物OBを撮像した撮像画像を取得し、処理部PRにおいて撮像画像を用いて検査処理を行う。ここでの検査処理の内容は種々考えられるが、例えば検査において合格と判定される状態の検査対象物OBの画像(撮像画像であってもよいし、モデルデータから作成されてもよい)を合格画像として取得しておき、当該合格画像と実際の撮像画像との比較処理を行えばよい。撮像画像が合格画像に近ければ、当該撮像画像に撮像された検査対象物OBは合格であると判定できるし、撮像画像と合格画像との差異が大きければ、検査対象物OBには何らかの問題があり不合格と判定できる。また、特許文献1には、検査装置としてロボットを利用する手法が開示されている。
しかし、上記の合格画像の例からもわかるように、検査装置により検査を行うためには、当該検査に用いられる情報を設定しておく必要がある。例えば、検査対象物OBの配置のされ方にもよるが、検査対象物OBをどの方向から観察するか、という情報を設定しておく必要がある。
一般的に、検査対象物OBがどのように観察されるか(狭義には撮像画像に撮像された際にどのような形状、サイズとなるか)は、検査対象物OBと観察する位置、方向との相対的な関係により変化する。以下、検査対象物OBを観察する位置を視点位置と表記し、視点位置は狭義には撮像部の配置される位置を表すものとする。また、検査対象物OBを観察する方向を視線方向と表記し、視線方向は狭義には撮像部の撮像方向(光軸の方向)を表すものとする。視点位置、視線方向の基準を設けておかなければ、検査の度に検査対象物OBの見え方が変化しうるのであるから、見え方に応じて検査対象物OBの正常異常を判定するという外観検査を行うことはそもそも不可能である。
また、当該検査対象物OBに異常はないと判定するための基準となる合格画像として、どのような視点位置、視線方向から観察した画像を保持しておけばよいかが決定できない。つまり、検査時に観察が行われる位置方向が不定となってしまえば、検査時に取得された撮像画像との比較対象(検査基準)も不定であり、適切な検査ができない。なお、あらゆる視点位置、視線方向から、合格と判定される検査対象物OBを観察した場合の画像を保持しておけば合格画像がないという状況は回避できる。しかし、その場合の視点位置、視線方向は膨大なものとなってしまい、合格画像の枚数も膨大となることから現実的とは言えない。以上の点をふまえれば、合格画像もあらかじめ保持しておく必要がある。
さらに、一般的に合格画像や撮像画像には検査において不要な情報も含まれてしまうため、画像全体を用いて検査処理(比較処理)を行ったのでは検査の精度が低くなってしまうおそれがある。例えば、撮像画像には検査対象物以外にも、工具や治具等が撮像される場合があり、それらの情報が検査に用いられることは好ましくない。また、検査対象物の一部が検査対象である場合には、検査対象物の検査対象でない領域の情報により検査精度が低下するおそれもある。具体的には、図16(A)〜図16(D)を用いて後述するように、大きな物体Aに対して、物体Aに比べて小さい物体Bを組み付ける作業を考えた場合、検査の対象は組み付けられた物体Bの周辺とすべきであり、物体A全体を検査する必要性は低いし、A全体を検査対象とすることで誤判定の可能性も高まる。よって、検査処理の精度を向上させることを考えれば、検査領域も検査において重要な情報となる。
しかし、従来は上記の検査領域、視点位置、視線方向、或いは合格画像といった検査に用いられる情報は、画像処理の専門知識を有するユーザーにより設定が行われていた。なぜなら、合格画像と撮像画像の比較処理は、画像処理によって行われるが、当該画像処理の具体的な内容に応じて、検査に必要な情報の設定を変更することが求められるためである。
例えば、合格画像と撮像画像の比較処理(狭義には類似度の判定処理)を、画像中のエッジを用いた画像処理、画素値を全て用いる画像処理、輝度や色差色相を用いる画像処理、或いはその他の画像処理のいずれを用いるのが適しているかは、検査対象物OBの形状や色味、質感等に応じて変化しうる。よって画像処理の内容を変更可能なものであれば、検査を行うユーザーはどのような画像処理を行うかを適切に設定しなければならない。
また、画像処理の内容を設定できた場合、或いは汎用性の高い画像処理の内容が事前に設定済みであった場合でも、ユーザーは当該画像処理の内容を適切に把握している必要がある。なぜなら、画像処理の具体的な内容が変われば、検査に適している視点位置、視線方向も変化しうるためである。例えば、エッジ情報を用いて比較処理を行う場合には、検査対象物OBの形状のうち、複雑な部分が観察できる位置方向を視点位置、視線方向にするとよく、平坦な部分を観察する位置方向は不適切である。また、画素値を用いて比較処理を行うのであれば、色味の変化が大きい、或いは光源からの光が充分届くことで明るく観察できる領域を観察できる位置方向を視点位置、視線方向とすることが望ましい。つまり従来の手法においては、視点位置や視線方向、合格画像を含む検査に必要な情報の設定には、画像処理の専門知識が必要であった。さらにいえば、画像処理の内容が異なれば、合格画像と撮像画像の比較処理の基準も変更する必要がある。例えば、合格画像と撮像画像がどの程度類似していれば合格とし、どの程度差異があれば不合格とするかという基準は、画像処理の内容に応じて決定する必要があるが、当該基準も画像処理の専門知識がなければ設定できない。
つまり、ロボット等を用いることで検査を自動化できるとしても、当該検査に必要な情報の設定は難しいことであり、専門的な知識を有さないユーザーにとっては検査を自動化することは容易とは言えなかった。
また、本出願人の想定するロボットは、ロボット作業を実行させる際の教示をユーザーにとって容易なものとしたり、種々のセンサー等を設けて作業環境をロボット自身が認識できるものとすることで、多様な作業を柔軟に実行できるロボットである。このようなロボットは、多品種製造(狭義には一品種当たりの製造量が少ない多品種少量製造)に適している。しかし、製造時点での教示等を容易にしたとしても、製造した製品の検査が容易であるか否かは別の問題となる。なぜなら、製品が異なれば検査すべき対象物の位置も異なり、結果として撮像画像及び合格画像において比較対象とすべき検査領域も、製品ごとに異なってしまうためである。つまり、多品種製造を想定した場合、検査領域の設定をユーザーに委ねてしまうと、当該設定処理に関する負担が大きく、生産性の低下につながってしまう。
そこで本出願人は、第1の検査情報に基づいて検査処理に用いる第2の検査情報を生成することで、検査処理におけるユーザーの負担を軽減し、ロボット作業での生産性を向上させる手法を提案する。具体的には、本実施形態に係るロボット30は、撮像部(例えば図3の撮像部500)により検査対象物を撮像した撮像画像を用いて検査対象物を検査する検査処理を行うロボットであって、第1の検査情報に基づいて、検査処理の検査領域を含む第2の検査情報を生成し、第2の検査情報に基づいて、検査処理を行う。
ここで第1の検査情報とは、検査処理が実行されるよりも前のタイミングでロボット30が取得できる情報であって、第2の検査情報の生成に用いられる情報を表す。第1の検査情報は、事前に取得される情報であるため、事前情報と表現することもできる。本実施形態では第1の検査情報はユーザーにより入力されてもよいし、ロボット30において生成されてもよい。ユーザーにより第1の検査情報が入力される場合であっても、当該第1の検査情報は入力に際して画像処理の専門知識が求められるものではなく、容易に入力可能な情報となる。具体的には、検査対象物OBの形状情報、検査対象物OBの位置姿勢情報、及び検査対象物OBに対する相対的な検査処理対象位置の少なくとも1つを含む情報であってもよい。
後述するように、形状情報(狭義には3次元モデルデータ)、位置姿勢情報、検査処理対象位置の情報を用いることで、第2の検査情報を生成することができる。そして形状情報は、CADデータ等として事前に取得されていることが一般的であり、ユーザーが形状情報を入力する際には、既存の情報を選択すれば足りる。例えば、検査対象物OBの候補となる種々の物体のデータが保持されている状況で、ユーザーは当該候補の中から検査対象物OBを選択すればよい。また、位置姿勢情報も検査時に検査対象物OBがどのように配置されるか(例えば作業台上のどの位置にどのような姿勢でおかれるか)がわかれば容易に設定可能であり、位置姿勢情報の入力に画像処理の専門知識は求められない。また、検査処理対象位置とは、検査対象物OBのうち、検査を行いたい位置を表すものであり、例えば検査対象物OBの所与の部分の破損を検査するのであれば当該所与の部分の位置を表す情報である。また、物体Aに対して物体Bが組み付けられた検査対象物OBを対象として、物体Aと物体Bの組み立てが正常に行われたか否かを検査する場合には、物体Aと物体Bの組み立て位置(接触面、接触点、挿入位置等)が検査処理対象位置となる。検査処理対象位置についても同様に、検査の内容が把握できれば容易に入力可能であり、入力に際し画像処理の専門知識は不要である。
なお、本実施形態の手法は第2の検査情報の全てを自動生成するものに限定されない。例えば、第2の検査情報のうちの一部を本実施形態の手法により生成し、他の第2の検査情報はユーザーが手動で入力するものであってもよい。この場合、ユーザーは第2の検査情報の入力を完全に省略できるわけではないが、少なくとも設定が困難な視点情報等を自動生成できる点で、本実施形態の手法により検査を容易にできるというメリットに変わりはない。
また、検査処理は、ロボット30によるロボット作業の結果に対して行われる処理であり、第1の検査情報は、ロボット作業において取得される情報であってもよい。
ここでロボット作業とは、ロボットにより行われる作業であり、ねじ締めや半田づけ、圧着やスナップショット等による結合、ハンドや工具、治具を用いた変形等、種々の作業が考えられる。検査処理がロボット作業の結果に対して行われる場合、当該検査処理はロボット作業が正常に行われたか否かを判定することになる。その場合、そもそもロボット作業を実行するためには、検査対象物OBや作業内容に関する種々の情報が取得されている必要がある。例えば、作業対象物(検査対象物OBの全部又は一部)が作業前にどのような位置、姿勢に配置され、作業後にはどのような位置姿勢に変化しているかは既知の情報となる。また、ねじ締めや半田づけが行われたのであれば、作業対象物のうちのねじを締めた位置、半田づけを行った位置は既知である。同様に、複数の物体が結合されたのであれば、物体Aのどの位置にどの方向からどのような物体が結合されたのかは既知の情報であるし、作業対象物に変形が加えられれば、作業対象物のうちの変形箇所も、変形後の形状も既知の情報である。
つまり、ロボット作業が対象となる場合であれば、上記の形状情報、位置姿勢情報、検査処理対象位置に対応する情報や、その他第1の検査情報に含まれる情報は、ロボット作業が実行できた以上、既にかなりの部分(場合によっては必要な第1の検査情報の全て)が既知となっている。つまり、本実施形態に係るロボット30では、第1の検査情報はロボットの制御を行うユニット(例えば図1の処理部120)等が保持する情報を流用すればよい。また、図2(A)、図2(B)を用いて後述するように本実施形態の手法がロボット30とは異なる処理装置100に適用される場合にも、処理装置100は、ロボットに含まれる制御部350等から第1の検査情報を取得すればよい。そのため、ユーザーにとってみれば検査を行うために第1の検査情報を改めて入力する必要がなく、容易に第2の検査情報の生成が可能となる。
これにより、画像処理の専門知識を有さないユーザーであっても、容易に検査を実行する(少なくとも第2の検査情報を取得する)こと、或いは検査の実行に当たって第2の検査情報の設定に関する負担を軽減すること等が可能になる。なお、本明細書の以下の説明においては、検査処理の対象がロボット作業の結果である例について説明する。つまり、第1の検査情報をユーザーが入力する必要はないものとするが、上述したように、第1の検査情報の一部或いは全部をユーザーが入力することは妨げられない。第1の検査情報をユーザーが入力する場合であっても、当該第1の検査情報の入力において専門知識を求められないという点で、ユーザーにとって検査が容易になるという利点に変わりはない。
また、以下の説明では図3や図4を用いて後述するように、主としてロボット30により第2の検査情報を生成し、当該ロボット30において検査処理が実行される例について説明する。ただし本実施形態の手法はこれに限定されず、以下の説明は、図2(A)に示すように処理装置100において第2の検査情報を生成し、ロボット30は当該第2の検査情報を取得して検査処理を実行する手法に拡張可能である。或いは、図2(B)に示すように処理装置100において第2の検査情報を生成し、ロボットではない専用の検査装置等において、当該第2の検査情報を用いた検査処理が実行される手法にも拡張可能である。
以下、本実施形態に係るロボット30や処理装置100のシステム構成例について説明し、その後具体的な処理の流れについて説明する。さらに具体的には、第1の検査情報の取得から第2の検査情報の生成までの流れをオフライン処理として説明し、生成した第2の検査情報を用いたロボットによる実際の検査処理の流れをオンライン処理として説明する。
2.システム構成例
次に本実施形態に係るロボット30や処理装置100のシステム構成例について説明する。図1に示したように、本実施形態に係るロボットは、情報取得部110と、処理部120と、ロボット機構300と、撮像部500を含む。ただし、ロボット30は図1の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
情報取得部110は、検査処理の前に第1の検査情報を取得する。第1の検査情報がユーザーにより入力される場合には、情報取得部110は、ユーザーからの入力情報を受け付ける処理を行う。また、ロボット作業に用いられた情報を第1の検査情報とする場合には、情報取得部110は、作業時に処理部120において用いられた制御用情報を、図1には不図示の記憶部等から読み出す処理等を行えばよい。
処理部120は、情報取得部110が取得した第1の検査情報に基づいて第2の検査情報の生成処理を行うとともに、第2の検査情報を用いた検査処理を行う。処理部120での処理の詳細については後述する。また、処理部120は、検査処理、及び検査処理以外(例えば組み立て等のロボット作業)において、ロボット30の制御を行う。例えば処理部120では、ロボット機構300に含まれるアーム310と、撮像部500等の制御が行われる。なお、撮像部500は、ロボットのアーム310に取り付けられるハンドアイカメラであってもよい。
また、本実施形態の手法は、図2(A)に示したように、撮像部(図2(A)では撮像部500を示したがこれに限定されない)により検査対象物を撮像した撮像画像を用いて前記検査対象物の検査処理を行う装置に対して、検査処理に用いられる情報を出力する処理装置100であって、第1の検査情報に基づいて、検査処理における撮像部の視点位置及び視線方向を含む視点情報と、検査処理の検査領域とを含む第2の検査情報を生成し、第2の検査情報を検査処理を行う装置に対して出力する処理装置に適用できる。この場合、第1の検査情報の取得と、第2の検査情報の生成は、処理装置100で行われることになり、処理装置100は例えば図2(A)に示したように、情報取得部110と処理部120を含むものとして実現できる。
ここで、検査処理を行う装置とは、上述してきたようにロボット30であってもよい。この場合、ロボット30は図2(A)に示したように、アーム310と、検査対象物の検査処理に用いられる撮像部500と、アーム310及び撮像部500の制御を行う制御部350と、を含む。制御部350は、撮像部500の視点位置及び視線方向を表す視点情報と、検査領域を含む情報を第2の検査情報として処理装置100から取得し、当該第2の検査情報に従って、視点情報に対応する視点位置及び視線方向に、撮像部500を移動する制御を行い、取得された撮像画像と検査領域を用いて検査処理を実行する。
このようにすれば、処理装置100において第2の検査情報の生成を行い、他の機器において当該第2の検査情報を用いて適切に検査処理を実行することが可能になる。検査処理を行う装置がロボット30であれば、図1と同様に、第2の検査情報を用いて検査処理を行うロボットを実現することができるが、第2の検査情報の生成処理と第2の検査情報を用いた検査処理の実行主体が異なる機器となる点で図2(A)は図1とは異なる。
また、処理装置100は、第2の検査情報の生成処理だけでなく、ロボット30の制御処理を合わせて行ってもよい。例えば、処理装置100の処理部120は、第2の検査情報を生成するとともに、当該第2の検査情報に基づくロボットの制御用情報の生成を行う。この場合、ロボットの制御部350は、処理装置100の処理部120で生成された制御用情報に従ってアーム310等を動作させる。つまり、ロボットの制御の実質的な部分を処理装置100が担うことになり、この場合の処理装置100はロボットの制御装置として捉えることも可能である。
また、処理装置100で生成された第2の検査情報を用いて検査処理を実行する主体はロボット30に限定されるものではない。例えば、図5に示したような専用の機器において第2の検査情報を用いて検査処理を行ってもよく、この場合の構成例は図2(B)のようになる。図2(B)では、検査装置が第1の検査情報の入力を受け付け(これは例えば図5のインターフェース部IFを用いればよい)、当該第1の検査情報を処理装置100に対して出力する例を示した。その場合、処理装置100は、検査装置から入力された第1の検査情報を用いて第2の検査情報を生成することになる。ただし、第1の検査情報がユーザーから直接処理装置に入力される例のように、種々の変形実施が可能である。
本実施形態のロボット30は、図3に示したように、アームが1本の単腕ロボットであってもよい。図3ではアーム310のエンドエフェクターとして撮像部500(ハンドアイカメラ)が設けられている。ただし、エンドエフェクターとしてハンド等の把持部を設け、当該把持部や、アーム310の他の位置等に撮像部500を設ける等、種々の変形実施が可能である。また、図3ではPC等の機器を図2(A)の制御部350に対応する機器として示したが、当該機器は図1の情報取得部110及び処理部120に対応するものであってもよい。また、図3ではインターフェース部600を含み、インターフェース部600としては操作部610と表示部620を示したが、インターフェース部600を含むか否か、また含む場合の当該インターフェース部600の構成をどうするかは変形実施が可能である。
また、本実施形態に係るロボット30の構成は図3に限定されるものではない。例えば、ロボット30は図4に示したように、少なくとも第1のアーム310と、第1のアーム310と異なる第2のアーム320を含み、撮像部500は、第1のアーム310及び第2のアーム320の少なくとも一方に設けられるハンドアイカメラであってもよい。図4では第1のアーム310は、関節311,313と、関節の間に設けられるフレーム315,317から構成され、第2のアーム320についても同様のものとしたがこれに限定されない。また、図4では2本のアームを有する双腕ロボットの例を示したが、本実施形態のロボットは3本以上のアームを有してもよい。撮像部500についても、第1のアーム310に設けられるハンドアイカメラ(500−1)と、第2のアーム320に設けられるハンドアイカメラ(500−2)の両方を記載したが、どちらか一方であってもよい。
また、図4のロボット30はベースユニット部400を含んでいる。ベースユニット部400は、ロボット本体の下部に設けられ、ロボット本体を支持する。図4の例では、ベースユニット部400には車輪等が設けられ、ロボット全体が移動可能な構成となっている。ただし、ベースユニット部400が車輪等を持たず、床面等に固定される構成であってもよい。図4のロボットでは、ベースユニット部400に制御装置(図3において制御部350として示した装置)が格納されることで、ロボット機構300と制御部350とが一体として構成される。或いは、図3の制御部350に相当する装置のように、特定の制御用の機器を設けることなく、ロボットに内蔵される基板(更に具体的には基板上に設けられるIC等)により、上記の制御部350を実現してもよい。
2本以上のアームを有するロボットを用いる場合には、柔軟な検査処理が可能になる。例えば、撮像部500が複数設けられる場合には、複数の視点位置、視線方向から同時に検査処理を行うことが可能である。また、所与のアームに設けられたハンドアイカメラで、他のアームに設けられた把持部により把持される検査対象物OBを検査することも可能である。この場合、撮像部500の視点位置、視線方向だけでなく、検査対象物OBの位置姿勢を変化させることも可能となる。
なお、本実施形態にかかる処理装置或いはロボット30のうち処理部120等に対応する部分の機能は、図6に示すように、有線及び無線の少なくとも一方を含むネットワーク20を介して、ロボット30と通信接続されたサーバー700により実現されてもよい。
或いは本実施形態では、本発明の処理装置等の処理の一部を、処理装置であるサーバー700側が行ってもよい。この場合には、ロボット側に設けられた処理装置と、処理装置であるサーバー700との分散処理により、当該処理を実現する。具体的には、サーバー700側は、本発明の処理装置における各処理のうち、サーバー700に割り当てられた処理を行う。一方、ロボットに設けられた処理装置100は、本発明の処理装置の各処理のうち、ロボットの処理部等に割り当てられた処理を行う。
例えば、本発明の処理装置が第1〜第M(Mは整数)の処理を行うものであり、第1の処理がサブ処理1a及びサブ処理1bにより実現され、第2の処理がサブ処理2a及びサブ処理2bにより実現されるように、第1〜第Mの各処理が複数のサブ処理に分割できる場合を考える。この場合、サーバー700側がサブ処理1a、サブ処理2a、・・・サブ処理Maを行い、ロボット側に設けられた処理装置100がサブ処理1b、サブ処理2b、・・・サブ処理Mbを行うといった分散処理が考えられる。この際、本実施形態に係る処理装置、すなわち、第1〜第Mの処理を実行する処理装置とは、サブ処理1a〜サブ処理Maを実行する処理装置であってもよいし、サブ処理1b〜サブ処理Mbを実行する処理装置であってもよいし、サブ処理1a〜サブ処理Ma及びサブ処理1b〜サブ処理Mbの全てを実行する処理装置であってもよい。更にいえば、本実施形態に係る処理装置は、第1〜第Mの処理の各処理について、少なくとも1つのサブ処理を実行する処理装置である。
これにより、例えばロボット側の処理装置100よりも処理能力の高いサーバー700が、処理負荷の高い処理を行うこと等が可能になる。さらに、処理装置がロボット制御まで行う場合であれば、サーバー700が各ロボットの動作を一括して制御することができ、例えば複数のロボットに協調動作をさせること等が容易になる。
また近年は、多品種少数の部品を製造することが増えてきている。そして、製造する部品の種類を変更する場合には、ロボットが行う動作を変更する必要がある。図6に示すような構成であれば、複数のロボットの各ロボットへ教示作業をし直さなくても、サーバー700が一括して、ロボットが行う動作を変更すること等が可能になる。さらに、各ロボットに対して一つの処理装置を設ける場合に比べて、処理装置のソフトウェアアップデートを行う際の手間を大幅に減らすこと等が可能になる。
3.処理の流れ
次に本実施形態の処理の流れについて説明する。具体的には、第1の検査情報の取得及び第2の検査情報の生成を行う流れと、生成した第2の検査情報に基づいて検査処理を実行する際の流れを説明する。検査処理をロボットで実行することを想定した場合、第1の検査情報の取得及び第2の検査情報の生成はロボットの検査処理における動作を伴わなくても実行可能であることから、オフライン処理と表記する。一方、検査処理の実行はロボット動作を伴うことからオンライン処理と表記する。
なお、以下では検査処理の対象はロボットによる組み立て作業の結果であり、検査処理もロボットにより実行される例について説明するが、種々の変形実施が可能である点は上述したとおりである。
3.1 オフライン処理
まず、本実施形態における第1の検査情報と第2の検査情報の具体例を図7に示す。第2の検査情報には、視点情報(視点位置及び視線方向)と、検査領域(ROI、確認領域)と、合格画像が含まれる。また、第1の検査情報には形状情報(3次元モデルデータ)と、検査対象物の位置姿勢情報と、検査処理対象位置が含まれる。
具体的なオフライン処理の流れを図8のフローチャートに示す。オフライン処理が開始されると、まず情報取得部110は、検査対象物の3次元モデルデータ(形状情報)を、第1の検査情報として取得する(S101)。検査(外観検査)においては、検査対象物がどのように見えるかが重要であり、所与の視点位置、視線方向からの見え方は検査対象物の形状に依存する。特に、3次元モデルデータは、欠損や変形のない理想的な状態の検査対象物の情報となるため、検査対象物の実物に対する検査処理において有用な情報となる。
検査処理が、ロボットによるロボット作業の結果に対して行われる処理である場合には、情報取得部110は、ロボット作業の結果として取得される検査対象物の3次元モデルデータである作業後3次元モデルデータと、ロボット作業前の検査対象物の3次元モデルデータである作業前3次元モデルデータとを取得する。
ロボット作業の結果を検査する場合には、作業が適切に行われたかの判定が必要となる。作業が物体Aと物体Bを組み立てる組み立て作業の場合であれば、物体Aに対して、所定の位置に所定の方向から物体Bが組み付けられているか否かを判定する。つまり、物体A、物体B単体の3次元モデルデータの取得では足らず、物体Aに対して、所定の位置に所定の方向から物体Bが組み付けられているデータ、すなわち理想的に作業が完了した状態での3次元モデルデータが重要となる。よって本実施形態の情報取得部110は、作業後3次元モデルデータを取得する。また、後述する検査領域や合格閾値の設定のように、作業前後での見え方の差異が重要となる場面もあるため、作業前3次元モデルデータも合わせて取得しておく。
作業前3次元モデルデータと作業後3次元モデルデータの例を図9(A)、図9(B)に示す。図9(A)、図9(B)では、直方体のブロック状の物体Aに対して、所与の1軸方向でずらした位置に物体Aと同様の姿勢で直方体のブロック状の物体Bを組み付ける作業を例に取っている。この場合、作業前3次元モデルデータは、物体Bの組み付け前であるため、図9(A)に示したように物体Aの3次元モデルデータとなる。また、作業後3次元モデルデータは、図9(B)に示したように物体Aと物体Bが上記条件で組み付けられたデータとなる。なお、図9(A)、図9(B)では平面的に図示する関係上、3次元モデルデータが所与の視点位置、視線方向から観察したかのようなデータとなっているが、「3次元」という文言からもわかるように、第1の検査情報として取得される形状データは、観察される位置や方向が限定されない3次元のデータとなる。
また、S101では、視点情報(視点位置及び視線方向を含む情報)の候補となる視点候補も合わせて取得する。この視点候補は、ユーザーが入力したり、処理部120等で生成するものではなく、例えば処理装置100(或いはロボット30)のメーカーが出荷前に設定しておく情報を想定している。
視点候補は、上述したように視点情報の候補となるものであるが、当該視点候補となり得る点は非常に多数(狭義には無限)に考えられる。例えば、検査対象物を基準とした対象物座標系(物体座標系)で視点情報を設定する場合には、対象物座標系のうち、検査対象物の内部に含まれる点以外の点は全て視点候補となり得てしまう。もちろんそのような多数の視点候補を用いることで(処理上は視点候補を限定しておかないことで)、視点情報を状況に応じて柔軟に、或いは細かく設定することが可能である。よって、視点情報の設定に当たり処理負荷が問題とならないのであれば、S101において視点候補を取得しなくてよい。ただし以下の説明では、種々の物体が検査対象物となった場合でも、汎用的に利用でき、且つ視点情報の設定における処理負荷を増大させないように、視点候補をあらかじめ設定しておくものとする。
この際、検査時点での検査対象物OBの配置される位置姿勢等が既知とは限らない。そのため、視点情報に対応する位置姿勢に撮像部500を移動できるかが不明であること等から、視点情報を非常に少数(例えば1つや2つ)に限定することは現実的ではない。なぜなら、少数の視点情報だけ生成した場合であって、当該少数の視点情報の全てに撮像部500を移動できないということになれば、検査処理が実行できないためである。そのような危険性を抑止するためには、視点情報はある程度の数だけ生成する必要があり、結果として視点候補の数もある程度の数となる。
視点候補の例を図10に示す。図10では対象物座標系の原点の周囲に18個の視点候補を設定している。具体的な座標値が図11となる。視点候補Aであれば、視点位置がx軸上であり、且つ原点から所与の距離(図11の例であれば200)だけ離れた位置となる。また、視線方向は(ax,ay,az)により表されるベクトルに対応し、視点候補Aの場合、x軸負方向、すなわち原点方向となる。なお、視線方向ベクトルだけ決定したとしても、撮像部500は視線方向ベクトル周りの回転ができてしまうため姿勢が一意に決まらない。よってここでは、視線方向ベクトル周りの回転角度を規定する他のベクトルを(bx,by,bz)として設定しておく。その他、図10に示したように、xyzの各軸上の2点と、xyzのうちの2軸の間の点の合計18個を視点候補とする。このように対象物座標系の原点を取り囲むように視点候補を設定しておけば、ワールド座標系(ロボット座標系)で検査対象物がどのように配置されたとしても、適切な視点情報の設定が可能になる。具体的には、視点候補に基づき設定された視点情報の全て(或いは大多数)に撮像部500を移動させることができない、或いは移動させても遮蔽物等により検査ができないといった可能性を抑止でき、少なくとも充分な数の視点情報での検査が可能になる。
外観検査では、1つの視点位置及び視線方向だけから検査を行うことは妨げられないが、精度を考慮すれば複数の視点位置及び視線方向から検査を行うことが望ましい。1方向だけからでは、検査すべき領域を充分に(例えば画像上で充分大きなサイズで)観察できない可能性等が考えられるためである。そのため、第2の検査情報は1つの視点情報ではなく、複数の視点情報を含む視点情報セットであることが好ましい。これは例えば、上述の視点候補のうちの複数の候補(基本的には全ての候補)を用いて視点情報を生成することで実現される。また仮に上述の視点候補を用いない場合にも、視点情報を複数求めるようにすればよい。つまり、第2の検査情報は、複数の視点情報を含む視点情報セットを含み、視点情報セットの各視点情報は、検査処理における撮像部500の視点位置及び視線方向を含む。具体的には、処理部120は、第1の検査情報に基づいて、撮像部500の複数の視点情報を含む視点情報セットを、第2の検査情報として生成する。
上述の視点候補は、対象物座標系における位置であるが、視点候補の設定段階では、具体的な検査対象物の形状やサイズは不定である。具体的には、図10は検査対象物を基準とした対象物座標系であるはずなのに、当該対象物座標系における物体の位置姿勢が不定の状態となっている。視点情報は、少なくとも検査対象物との相対的な位置関係は規定される必要があるから、視点候補から具体的に視点情報を生成するには検査対象物との対応づけが必要となる。
ここで上記の視点候補を鑑みるに、視点候補を設定した座標系の原点は、全ての視点候補の中心となる位置であり、且つ各視点候補に撮像部500が配置された場合に、当該撮像部500の撮像方向(光軸方向)に位置する。つまり、座標系の原点が撮像部500を用いた観察に最も適した位置と言える。検査処理において最も観察すべき位置とは、上述した検査処理対象位置(狭義には組立位置であってもよいし、図10に示したように組付け位置であってもよい)であるから、第1の検査情報として取得した検査処理対象位置を用いて検査対象物に対応付けられた視点情報を生成する。
つまり、第1の検査情報は、前記検査対象物に対する相対的な検査処理対象位置を含み、ロボット30は検査処理対象位置を基準として、検査対象物に対応する対象物座標系を設定し、対象物座標系を用いて、視点情報を生成する。具体的には、情報取得部110は、検査対象物に対する相対的な検査処理対象位置を、第1の検査情報として取得し、処理部120は、検査処理対象位置を基準として、検査対象物に対応する対象物座標系を設定し、対象物座標系を用いて、視点情報を生成する(S102)。
例えば、検査対象物の形状データが図12に示した形状であり、そのうちの点Oが検査処理対象位置であるとの第1の検査情報が取得されたとする。その場合、点Oを原点とし、検査対象物の姿勢が図12となる対象物座標系を設定すればよい。対象物座標系における検査対象物の位置姿勢が特定されれば、各視点候補と検査対象物との相対関係が明確となるため、各視点候補を視点情報として用いることが可能になる。
複数の視点情報を含む視点情報セットが生成されたら、各種第2の検査情報の生成を行う。まずは各視点情報に対応する合格画像の生成を行う(S103)。具体的には、処理部120は、視点情報に対応する視点位置及び視線方向に配置された仮想カメラにより、3次元モデルデータを撮像した画像を、検査処理に用いられる合格画像として取得する。
合格画像は、検査対象物の理想的な状態を表す画像となる必要がある。第1の検査情報として取得される3次元モデルデータ(形状情報)は、検査対象物の理想的な形状データであるから、当該3次元モデルデータを視点情報に対応して配置された撮像部から観察した画像を合格画像としてもちいればよい。なお、3次元モデルデータを用いる場合、実際に撮像部500による撮像ではなく、仮想カメラを用いた処理(具体的には3次元データを2次元データに射影する変換処理)を行うことになる。なお、ロボット作業の結果に対する検査処理を想定すれば、合格画像とはロボット作業終了時の理想的な検査対象物の状態を表す画像となる。そして、ロボット作業終了時の理想的な検査対象物の状態とは、上述した作業後3次元モデルデータにより表されるから、作業後3次元モデルデータを仮想カメラで撮影した画像を合格画像とすればよい。合格画像は視点情報ごとに求められるものであるため、上述したように視点情報が18個設定される場合には、合格画像も18枚となる。図13(A)〜図13(G)のそれぞれ右側の画像が図9に対応する組み立て作業を行った場合の合格画像に対応する。図13(A)〜図13(G)では7視点分の画像を記載したが、上述したように画像数は視点情報の数だけ求められる。なお、S103の処理では後述する検査領域や合格閾値における処理を考慮して、作業前3次元モデルデータを仮想カメラで撮像した作業前画像(図13(A)〜図13(G)のそれぞれ左側)も合わせて求めておく。
次に、検査処理に用いられる合格画像及び撮像画像の画像中の領域である検査領域を第2の検査情報として求める(S104)。検査領域については上述したとおりである。なお、検査において重要な部分の見え方は視点情報に応じて変化するものであるため、検査領域の設定は視点情報セットに含まれる各視点情報に対して行われる。
具体的には、処理部120は、視点情報に対応する視点位置及び視線方向に配置された仮想カメラにより、作業後3次元モデルデータを撮像した画像を合格画像として取得し、視点情報に対応する視点位置及び視線方向に配置された仮想カメラにより、作業前3次元モデルデータを撮像した画像を、作業前画像として取得し、作業前画像と合格画像との比較処理に基づいて、検査処理に用いられる画像中の領域である検査領域を求める。
検査領域の設定処理の具体例を図14(A)〜図14(D)に示す。物体Aに対して右から物体Bを組み付けるロボット作業の結果が検査対象である場合には、図14(B)に示したように、作業後3次元モデルデータを仮想カメラで撮像した画像が合格画像として取得され、図14(A)に示したように作業前3次元モデルデータを仮想カメラで撮像した画像が作業前画像として取得される。このように、作業前後で状態の変化を伴うロボット作業において、より重要となるのは状態の変化部分である。図14(B)の例であれば、検査において判断すべきは、物体Bは物体Aと組み付けられているか、その組み付け位置は正確かといった条件である。物体Aのうち作業に関係する部分(例えば組み立てにおける接合面)以外の部分についても検査を行ってよいが、重要度は比較的低いものとなる。
つまり、合格画像及び撮像画像において重要度が高い画像中の領域は、作業の前後において変化が生じている領域であると考えることができる。よって本実施形態では、処理部120は、作業前画像と合格画像との差分である差分画像を求める処理を、比較処理として行い、差分画像中の検査対象物を含む領域を検査領域として求める。図14(A)、図14(B)の例であれば、差分画像は図14(C)となるため、図14(C)に含まれる物体Bの領域を含む検査領域を設定する。
このようにすれば、差分画像中の検査対象物を含む領域、すなわち検査の重要度が高いと推定される領域を検査領域とすることが可能である。
この際、検査処理対象位置(図14(A)等でいう組立位置)は第1の検査情報として既知であり、当該検査処理対象位置が画像中でどこに位置するかも既知である。上述したように、検査処理対象位置は検査処理における検査の基準となる位置であるから、差分画像と検査処理対象位置から検査領域を求めてもよい。例えば、処理部120は図14(C)に示すように、差分画像中での検査処理対象位置と、差分画像に残される領域との、縦方向での長さの最大値BlobHeightと、横方向での長さの最大値Blobwidthを求める。このようにすれば、検査処理対象位置を中心として、上下にそれぞれBlobHeight、左右にそれぞれBlobwidthの距離の範囲内の領域を検査領域とすれば、差分画像中の検査対象物を含む領域を検査領域として求めることが可能である。なお、本実施形態では縦方向及び横方向にそれぞれマージンを持たせるものとしてもよく、図14(D)の例であれば上下左右にそれぞれ30ピクセルのマージンを持たせた領域を検査領域としている。
図15(A)〜図15(D)、図16(A)〜図16(D)についても同様である。図15(A)〜図15(D)は、視点位置から見た場合に物体Aの裏側に比較的細い物体Bを組み付ける作業(或いは画像における横方向に穴が空いた物体Aに、棒状の物体Bを挿入する作業)の例である。この場合、差分画像における検査対象物の領域が連続しない複数の領域に分かれることになるが、図14(A)〜図14(D)と同様に処理できる。ここでは物体Bが物体Aに比べて細く、物体Aの画像における上端部近辺、或いは下端部近辺は検査における重要度が低いと想定される。本実施形態の手法であれば、図15(D)に示したように、重要度が低いと思われる物体Aの領域を検査領域から除外することが可能である。
図16(A)〜図16(D)は、大きな物体Aに対して、物体Aに比べて小さい物体Bを組み付ける作業である。これは例えば、PCやプリンター等である物体Aの規定の箇所に、物体Bであるねじを締める作業に対応する。このような作業では、PCやプリンター全体を検査する必要性は低く、ねじ締めが行われた箇所の重要度が高い。その点、本実施形態の手法であれば、図16(D)に示したように、物体Aの大部分を検査領域から除外し、検査すべき物体Bの周辺を検査領域として設定することが可能である。
なお、上述の手法は汎用性の高い検査領域の設定手法ではあるが、本実施形態の検査領域の設定手法はこれに限定されず、他の手法により検査領域を設定してもよい。例えば、図14(D)ではより狭い検査領域でも充分であるため、より狭い領域を設定するような手法を用いてもよい。
次に、合格画像と実際に撮像される撮像画像との比較処理において用いられる閾値(合格閾値)の設定処理を行う(S105)。具体的には、処理部120は、上記の合格画像と、作業前画像を取得し、作業前画像と合格画像との類似度に基づいて、撮像画像と合格画像とに基づく検査処理に用いられる閾値を設定する。
閾値設定処理の具体例を図17(A)〜図17(D)に示す。図17(A)が合格画像であり、ロボット作業が理想的に行われていれば(広義には検査対象物が理想的な状態であれば)、実際に撮像される撮像画像も合格画像と一致するはずであり、類似度は最大値(ここでは1000とする)になる。一方、合格画像と一致する要素が全くなければ類似度は最小値(ここでは0とする)になる。ここでの閾値は、合格画像と撮像画像の類似度が当該閾値以上であれば検査が合格であり、類似度が閾値より小さければ検査が不合格であると判定する値となる。つまり、閾値は0と1000の間の所与の値となる。
ここで、図17(B)は図17(A)に対応する作業前画像であるが、図17(B)にも、図17(A)と共通する部品が含まれているため、作業前画像と合格画像の類似度は0でない値となる。例えば、類似度の判定を画像のエッジ情報を用いて行う場合には、図17(A)のエッジ情報である図17(C)を比較処理に用いるが、作業前画像のエッジ情報である図17(D)にも、17(C)に一致する部分が含まれる。図17(C)、図17(D)の例であれば、類似度の値は700弱程度となる。よって、作業を全くしていない状態の検査対象物が撮像画像に撮像されたとしても、当該撮像画像と合格画像の類似度は700程度の値を持ってしまう。作業を全くしていない状態の検査対象物が撮像画像に撮像されるとは、例えば作業自体が実行できなかったとか、実行したが組み付ける側の物体が落下してしまい画像に撮像されなかったといった状態であり、ロボット作業は失敗している可能性が高い。つまり、検査として「不合格」となるべき状況でも700程度の類似度が出てしまうのであるから、閾値として当該値を下回る値を設定することは不適切と言える。
よって本実施形態では、類似度の最大値(例えば1000)と、作業前画像と合格画像との類似度(例えば700)の間の値を閾値として設定する。一例としては平均値を用いればよく、下式(1)により閾値を求めてもよい。
閾値={1000+(合格画像と作業前画像の類似度)}/2 ・・・・・(1)
また、閾値の設定は種々の変形実施が可能であり、例えば合格画像と作業前画像の類似度の値に応じて、閾値を求める式を変更するものであってもよい。
例えば、合格画像と作業前画像の類似度が600以下の場合には、閾値を800で固定し、合格画像と作業前画像の類似度が900以上の場合には、閾値を1000で固定し、それ以外の場合に上式(1)を用いるといった変形実施が可能である。
なお、合格画像と作業前画像の類似度は作業前後での検査対象物の見え方によって変化するものである。例えば、図17(A)〜図17(D)とは異なる視点情報に対応する図18(A)〜図18(D)の場合、組み立て前後での検査対象物の見え方に差異が小さく、結果として合格画像と作業前画像の類似度が上述の例に比べて高くなっている。つまり、合格画像や検査領域と同様に、類似度及び閾値についても視点情報セットに含まれる各視点情報に対して算出処理が行われる。
最後に、処理部120は、視点情報セットの各視点情報に対して、視点情報に対応する視点位置及び視線方向に撮像部500を移動させる際の優先度を表す優先度情報を設定する(S106)。上述してきたように、視点情報により表される視点位置及び視線方向に応じて、検査対象物の見え方は変化する。よって、所与の視点情報からは検査対象物のうち、検査すべき領域がよく見えるのに対して、他の視点情報からは当該領域を見ることができないといった状況も生じうる。また、上述したように視点情報セットには充分な数の視点情報が含まれるため、検査処理においてその全てを対象として検査を行う必要はなく、所定の視点情報(例えば2箇所)で合格なら最終結果も合格とし、それまでに対象とならなかった視点情報については処理を行わないといったことが可能である。以上をふまえて、検査処理の効率化を考慮すれば、検査すべき領域がよく見える等、より検査処理において有用な視点情報を優先的に処理することが望ましい。そこで本実施形態では、各視点情報に対して優先度を設定する。
ここで検査処理がロボット作業の結果に対するものである場合、作業の前後での差異が明確である方が検査には有用である。極端な例として、図19(A)に示したように大きな物体Aに、図面上で左側から小さな物体Bを組み付ける作業を考える。この場合、図19(A)の視点位置1及び視線方向1に対応する視点情報1を用いた場合、作業前画像が図19(B)、合格画像が図19(C)となり、差異が生じない。つまり、視点情報1はここでの作業を検査するに当たって有用な視点情報でない。一方、視点位置2及び視線方向2に対応する視点情報2を用いた場合、作業前画像が図19(D)、合格画像が図19(E)となり、差異が明確である。この場合、視点情報2の優先度を視点情報1の優先度よりも高くするとよい。
つまり、作業の前後での変化量が大きいほど優先度を高く設定すればよく、作業の前後での変化量が大きいとは、図17(A)〜図18(D)を用いて説明した作業前画像と合格画像の類似度が低いことを表す。よってS106の処理では、複数の視点情報のそれぞれについて作業前画像と合格画像の類似度を算出し(これはS105の閾値設定の際に求められている)、類似度が低いほど高い優先度を設定すればよい。検査処理を実行する際には、優先度が高い視点情報から順に撮像部500を移動させて検査を行うことになる。
3.2 オンライン処理
次に、第2の検査情報を用いた検査処理であるオンライン処理の流れを、図20のフローチャートを用いて説明する。オンライン処理が開始されると、まず上述のオフライン処理により生成された第2の検査情報の読込が行われる(S201)。
そして、ロボット30は、優先度情報により表される優先度に基づいて設定された移動順序に従って、視点情報セットの各視点情報に対応する視点位置及び視線方向に、撮像部500を移動させる。これは例えば図1の処理部120、或いは図2(A)の制御部350の制御により実現できる。具体的には、視点情報セットに含まれる複数の視点情報のうち、最も優先度の高い1つの視点情報を選択し(S202)、当該視点情報に対応する視点位置及び視線方向に撮像部500を移動させる(S203)。このようにすれば、上述した優先度に従った撮像部500の制御により、効率的な検査処理が可能になる。
ただし、オフライン処理における視点情報は基本的に対象物座標系で規定された情報であり、実空間(ワールド座標系、ロボット座標系)での位置を考慮したものではない。例えば、図21(A)に示したように、対象物座標系において検査対象物の所与の面F1の方向に視点位置及び視点方向が設定されていたとする。その場合、当該検査対象物の検査処理において、図21(B)に示したように検査対象物が面F1を下にして作業台に配置された場合、上記の視点位置及び視線方向は作業台の下となってしまい、撮像部500(ロボット30のハンドアイカメラ)を当該位置方向まで移動させることが不可能となる。
つまり、S203は、必ず視点情報に対応する位置姿勢まで撮像部500を移動させるのではなく、移動可能であるかの判定を行って(S204)、移動可能である場合に移動する制御となる。具体的には、処理部120は、ロボットの可動範囲情報に基づいて、複数の視点情報のうちの第i(iは自然数)の視点情報に対応する視点位置及び視線方向に撮像部500を移動させることができないと判定された場合には、第iの視点情報に対応する撮像部500の移動をスキップし、移動順序において第iの視点情報の次の第j(jはi≠jを満たす自然数)の視点情報に対する制御を行う。具体的にはS204でNoと判定された場合には、S205以降の検査処理をスキップし、S202に戻って次に視点情報の選択を行う。
ここで、視点情報セットに含まれる視点情報の数をN(Nは自然数であり、上述した図10の例であればN=18)とすれば、iは1≦i≦Nを満たす整数であり、jは1≦j≦N及びj≠iを満たす整数である。また、ロボットの可動範囲情報とは、ロボットのうち特に撮像部500の設けられた部分の移動できる範囲を表した情報である。ロボットに含まれる各関節は、当該関節のとれる関節角の範囲が設計上決定されている。そして、各関節の関節角の値が決まれば、ロボットの所与の位置はフォワードキネマティクスにより演算可能である。つまり、可動範囲情報はロボットの設計事項から求められる情報であり、関節角の取り得る値の組であってもよいし、撮像部500の取りうる空間的な位置姿勢であってもよいし、他の情報であってもよい。
なお、ロボットの可動範囲情報は、ロボット座標系、或いはワールド座標系を用いて表現されることが一般的である。そこで、視点情報と可動範囲情報の比較を行うためには、図21(A)のような対象物座標系での視点情報を、図21(B)に示したような実空間での位置関係、すなわちロボット座標系での視点情報に変換する必要がある。
よって情報取得部110は、検査対象物のグローバル座標系における位置姿勢を表す対象物位置姿勢情報を第1の検査情報として取得しておき、S204の処理において、処理部120は、対象物位置姿勢情報に基づき求められる、グローバル座標系と対象物座標系の相対関係に基づいて、グローバル座標系で表現される視点情報を求め、グローバル座標系で表現されたロボットの可動範囲情報と、グローバル座標系で表現される視点情報とに基づいて、視点情報により表される視点位置及び視線方向に撮像部500を移動できるか否かの判定を行う。
この処理は座標変換処理であるため、2つの座標系の相対関係が必要であり、当該相対関係はグローバル座標系における対象物座標系の基準の位置姿勢、すなわち対象物位置姿勢情報により求めることができる。
なお、視点情報により表される視線方向は、撮像部500の姿勢を一意に決定するものである必要はない。具体的には、図10、図11の視点候補の説明で上述したように、(x,y,z)により視点位置が決定され、(ax,ay,az)及び(bx,by,bz)により撮像部500の姿勢が決定されるが、(bx,by,bz)については考慮しなくてもよい。視点情報により表される視点位置及び視線方向に撮像部500を移動できるか否かの判定において、(x,y,z)、(ax,ay,az)及び(bx,by,bz)の全てを条件としてしまうと、当該条件を満たす撮像部500の移動が困難となってしまう。具体的には(x,y,z)により表される位置から原点の方向である(ax,ay,az)を撮像することはできても、その際の(ax,ay,az)周りの回転角度を表すベクトルは、所定範囲しかとれず、(bx,by,bz)を満足することができないということがあり得る。よって本実施形態では、視線方向には(bx,by,bz)を含めなくてもよく、(x,y,z)及び(ax,ay,az)が満たされれば、撮像部500が視点情報まで移動できると判定する。
視点情報に対応する位置姿勢に撮像部500が移動できた場合には、当該位置姿勢の撮像部500による撮像を行って撮像画像を取得する(S205)。検査処理は撮像画像と合格画像の比較により行われるが、合格画像では上記(bx,by,bz)は所定の値を用いているのに対して、撮像画像を撮像する撮像部500は視線方向に対する回転角度が(bx,by,bz)により表される角度とは異なる可能性がある。例えば、合格画像が図22(A)であるのに対して、撮像画像が図22(B)となるケースのように、2つの画像の間に所与の角度での回転が生じてしまう場合がある。このままでは検査領域の切り出しも適切なものとならないし、類似度の算出も同様である。なお、図22(B)は便宜上、モデルデータから作成した合格画像と同様に背景を単色無地としたが、図22(B)は撮像画像であるため、他の物体が写り込むこともあり得る。また、照明光等の関係から、検査対象物の色味が合格画像とは異なるものになることも考えられる。
よってここでは、撮像画像と合格画像との間の画像回転角度の算出処理を行う(S206)。具体的には、合格画像を生成する際には上記(bx,by,bz)を用いていたのであるから、合格画像に対応する撮像部(仮想カメラ)の視線方向に対する回転角度は既知の情報である。また、撮像画像を撮像する際の撮像部500の位置姿勢についても、撮像部500を視点情報に対応する位置姿勢に移動させるためのロボット制御において既知となっているはずであり、そうでなければそもそも移動できない。よって、撮像時の撮像部500の視線方向に対する回転角度も求めることができる情報である。S206の処理では、視線方向に対する2つの回転角度の差分から、画像間の回転角度を求める。さらに、求めた画像回転角度を用いて、合格画像と撮像画像の少なくとも一方の回転変形処理を行って、合格画像と撮像画像の角度の違いを補正する。
以上の処理で合格画像と撮像画像の角度の対応がとれたので、各画像のうちS104で求めた検査領域を抽出し(S207)、当該領域を用いて確認処理を行う(S208)。S208では、合格画像と撮像画像の類似度を算出し、当該類似度がS105で求めた閾値以上であれば合格、そうでなければ不合格と判定すればよい。
ただし、上述したように検査処理を1つの視点情報だけから行うのではなく、複数の視点情報を用いてもよい。よって、指定回数だけの確認処理が実行されたかを判定し(S209)、指定回数実行されていれば処理を終了する。例えば、3箇所での確認処理で問題ない場合に合格とする検査処理であれば、S208で3回合格との判定がされた場合に、S209でYesと判定され、検査対象物は合格として検査処理が終了する。一方、S208で合格であったとしても、当該判定が1回目或いは2回目であれば、S209ではNoと判定され、次の視点情報に対する処理を継続する。
なお、以上の説明では、オンライン処理も情報取得部110や処理部120により行われるものとしたが、これには限定されず、上述したようにロボット30の制御部350により上記処理が行われてもよい。つまりオンライン処理は、図1のロボット30の情報取得部110や処理部120により行われてもよいし、図2(A)のロボットの制御部350で行われてもよい。或いは、図2(A)の処理装置の情報取得部110や処理部120により行われてもよく、この場合の処理装置100は上述したようにロボットの制御装置であると考えることができる。
ロボット30の制御部350によりオンライン処理が行われる場合には、ロボット30の制御部350は、ロボット30の可動範囲情報に基づいて、複数の視点情報のうちの第i(iは自然数)の視点情報に対応する視点位置及び視線方向に撮像部500を移動させることができないと判定された場合には、第iの視点情報に対応する撮像部500の移動をスキップし、移動順序において第iの視点情報の次の第jの(jはi≠jを満たす自然数)視点情報に対する制御を行う。
なお、本実施形態の処理装置100等は、その処理の一部または大部分をプログラムにより実現してもよい。この場合には、CPU等のプロセッサーがプログラムを実行することで、本実施形態の処理装置100等が実現される。具体的には、非一時的な情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをCPU等のプロセッサーが実行する。ここで、情報記憶媒体(コンピューターにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、CD等)、HDD(ハードディスクドライブ)、或いはメモリー(カード型メモリー、ROM等)などにより実現できる。そして、CPU等のプロセッサーは、情報記憶媒体に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピューターに実行させるためのプログラム)が記憶される。