以下、図面を参照して三次元形状計測システム12(以下「形状計測システム12」と略す)と、形状計測システム12を組み込んだ工作機械システム10の構成について説明する。図1は、工作機械システム10の構成を示すイメージ図である。
図1に示すように、工作機械システム10は、工作機械14と、形状計測システム12と、を有している。工作機械14は、加工製品を製造するために、ワークに対して所定の加工を施す。かかる工作機械14の種類は特に限定されないが、例えば、工作機械14は、金属製のワークに対して金属加工(例えば切削加工やプレス加工等)を施す金属加工機でもよい。図1において、工作機械14は、主軸14aおよび刃物台14bを有した旋盤である。以下の説明では、この工作機械14で取り扱うワークを、形状計測の対象物100として取り扱う。ただし、形状計測の対象物100は、ワークに限らず、他の部材、例えば、工具や治具等でもよい。
かかる工作機械14は、数値制御装置20を有している。数値制御装置20は、加工プログラム66(「NCプログラム」ともいう)を解析して、工作機械14を操作するために、ワークに対する工具経路、加工に必要な作業の工程等を、数値および符号で構成した数値情報で指令する装置である。この数値制御装置20は、ワーク(すなわち対象物100)の形状を示す立体データ69(例えば、CADデータ等)に基づいて、工具とワークとの干渉チェックや、工具の経路生成、加工精度の判定、対象物100の形状が基準形状と一致するかの判定、対象物100が所定の位置にあるかないかの判定等を行う。かかる数値制御装置20は、物理的には、プロセッサとメモリとを有したコンピュータである。工作機械14には、さらに、オペレータに情報を提示するとともにオペレータからの指令を受け付ける操作パネル22も設けられている。
さらに、数値制御装置20は、対象物100の加工に必要なデータ、例えば、加工プログラム66や加工図面64等を記憶する。数値制御装置20は、有線通信または無線通信により、計測コントローラ30と通信可能であり、必要に応じて、加工プログラム66等を、計測コントローラ30に送信する。なお、本例では、加工プログラム66等を、数値制御装置20が記憶する構成としているが、計測コントローラ30と通信可能な、別の外部記憶装置が記憶する構成としてもよい。例えば、クラウドデータサーバ等が加工プログラム66等を記憶し、計測コントローラ30へ送信してもよい。
形状計測システム12は、対象物100の形状を計測するもので、計測コントローラ30と、撮像ユニット50と、を有している。撮像ユニット50は、対象物100を撮像する。撮像ユニット50で撮像された画像は、計測用画像60または予備画像62として計測コントローラ30に送信されるが、これについては、後述する。
計測コントローラ30は、計測用画像60を撮像する際の撮像条件56を特定し、特定された撮像条件56での撮像を撮像ユニット50に指示する。なお、以下では、撮像条件の符号は省略する。また、計測コントローラ30は、撮像ユニット50から送られた計測用画像60に基づいて、対象物100の点群データ74を生成し、この点群データ74に基づいて、対象物100の三次元形状を示す立体データ69を生成する。生成された立体データ69は、数値制御装置20に送信される。
次に、形状計測システム12の構成について、より詳細に説明する。図2は、形状計測システム12の構成を示すブロック図である。図2に示すように、また、上述した通り、形状計測システム12は、計測コントローラ30と、撮像ユニット50と、を有する。
計測コントローラ30は、物理的には、プロセッサ32と、メモリ34と、通信I/F36と、UI装置38と、記憶装置40と、を有したコンピュータである。この「コンピュータ」には、コンピュータシステムを一つの集積回路に組み込んだマイクロコントローラも含まれる。また、プロセッサ32とは、広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU:Central Processing Unit、等)や、専用のプロセッサ(例えばGPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含むものである。また、以下に述べる計測コントローラ30の動作は、1つのプロセッサによって成されるのみでなく、物理的に離れた位置に存在する複数のプロセッサの協働により成されるものであってもよい。同様に、メモリ34も、物理的に一つの要素である必要はなく、物理的に離れた位置に存在する複数のメモリで構成されてもよい。また、メモリ34は、例えば、半導体メモリ(例えばRAM、ROM等)を含んでもよい。
通信I/F36は、外部の他の電子機器と、有線通信または無線通信により、データを送受する。通信I/F36は、例えば、数値制御装置20、および撮像ユニット50が、通信相手となる。UI装置38は、オペレータに各種情報を提示するとともに、オペレータからの指示を受け付ける。かかるUI装置38は、例えば、ディスプレイやスピーカなどの出力装置と、キーボードやマウス、マイク、タッチパネル等の入力装置と、を有している。なお、本例では、UI装置38を、計測コントローラ30の構成要素として記載しているが、UI装置38の一部または全ては、計測コントローラ30とは、完全に異なる別の装置として構成されてもよい。例えば、UI装置38の一部機能は、オペレータが所有するとともに計測コントローラ30と通信可能な情報端末(例えばスマートホン等)のユーザインターフェースで実現されてもよい。
記憶装置40は、形状計測に必要な各種データを記憶するもので、物理的には、例えば、ハードディスクドライブ、ソリッドステートドライブ、またはこれらの組み合わせで構成される。なお、本例では、記憶装置40を計測コントローラ30の構成要素として記載しているが、記憶装置40の一部または全ては、計測コントローラ30とは完全に異なる別の装置として構成されてもよい。例えば、記憶装置40は、計測コントローラ30と通信可能なクラウドサーバに設けられた記憶装置でもよい。
記憶装置40には、条件情報42と、リファレンスデータ44と、学習モデル45と、が記憶されている。条件情報42は、計測用撮像における撮像条件を、対象物100の材質および表面性状の複数の組み合わせそれぞれに分けて記録したデータである。この条件情報42の具体的内容については後述する。リファレンスデータ44は、対象物100の材質および表面性状を特定するために、後述する予備画像62と比較される複数の画像データである。このリファレンスデータ44の具体的内容についても後述する。また、学習モデル45についても、後述する。
撮像ユニット50は、工作機械14の加工室内に存在する対象物100を撮像する。撮像ユニット50は、図2に示すように、カメラ52と、プロジェクタ54と、を有する。カメラ52は、対象物100を撮像し、画像データを生成する。このカメラ52で得られた画像データは、計測コントローラ30に送られる。また、対象物100を撮像する際の撮像条件、例えば、撮像回数やシャッタースピード等は、計測コントローラ30から指示される。
プロジェクタ54は、対象物100に撮像用光を照射する光源53として機能する。本例のプロジェクタ54(光源53)は、対象物100を照射する撮像用光の輝度分布を自由に変更することができる。この撮像用光の輝度分布は、計測コントローラ30から指示される。
次に、形状計測システム12による対象物100の三次元形状計測の原理について図3を参照して説明する。対象物100の三次元形状を計測する場合、計測コントローラ30は、撮像ユニット50を駆動して、計測用画像60を取得する。このとき、対象物100の全ての面について計測用画像60が得られるように、カメラ52に対する対象物100の相対的な姿勢を変更して、複数回撮像を行う。なお、カメラ52に対する対象物100の相対的な姿勢を変更するために、対象物100を動かしてもよいし、カメラ52を動かしてもよい。例えば、対象物100を保持する主軸14aを駆動して、対象物100のカメラ52に対する姿勢を変更してもよい。
計測コントローラ30は、得られた計測用画像60に基づいて、対象物100の点群データ74を生成する。点群データ74は、「ポイントクラウド」とも呼ばれ、対象物100表面形状を、X,Y,Z座標値を有する複数の点で表したデータである。かかる点群データ74は、例えば、ステレオ法や位相シフト法、光切断法等を用いて生成できる。ステレオ法は、カメラ52を移動して、または、カメラ52を二台用いて、対象物100を異なる位置から撮像し、その視差画像から対応点を探索し、三角測量にて高さを求める技術である。また、位相シフト法は、対象物100に対してプロジェクタ54でサイン波を位相をずらしながら投影し、複数回撮像して得られる画像の輝度変化から位相を求める技術である。さらに、光切断法は、ライン光を対象物100に投影し、これをカメラ52で撮像し、得られた画像に基づいて対象物100の形状を計測する技術である。こうした技術は、いずれも従来から知られているため、ここでの詳説は省略する。計測コントローラ30は、点群データ74が得られれば、この点群データ74に基づいて、対象物100の立体データ69を生成する。生成された立体データ69は、必要に応じて、数値制御装置20やオペレータが指定したコンピュータに送信される。
ところで、点群データ74を適切に生成するためには、計測用画像60に対象物100が適切に写っていなければならない。しかしながら、対象物100を単純にカメラ52で撮像しただけの場合、黒潰れや白飛びが生じることがある。黒潰れとは、画像のうち、暗い部分が真っ黒になってしまう現象であり、白飛びとは、画像のうち、明るい部分が真っ白になってしまう現象である。黒潰れおよび白飛びのいずれが生じたとしても、計測コントローラ30は、対象物100の形状を適切に判断できない。そこで、本例では、一つの計測用画像60を得るために、対象物100を所定の撮影条件で1回以上撮像している。以下では、この一つの計測用画像60を得るために行う撮像を「基礎撮像」と呼び、基礎撮像で得られる画像を「基礎画像70」と呼ぶ。一つの計測用画像60を得るために、基礎撮像を1回だけ行った場合、計測コントローラ30は、得られる一つの基礎画像70を、計測用画像60として取り扱う。基礎撮像を2回以上行った場合、計測コントローラ30は、2以上の基礎画像70からハイダイナミックレンジ画像72(以下「HDR画像72」という)を生成し、このHDR画像72を計測用画像60として取り扱う。
HDR画像72は、高い輝度幅を持つように、撮像条件を変えて対象物100を2回以上撮像して得られる2以上の基礎画像70を合成した画像である。図4は、HDR画像72の生成の様子を示す図である。図4の例では、対象物100は、奥側に位置する照明(図示せず)により照らされており、手前側の面に突起102を有する。また、図4において、第一基礎画像70fは、突起102に露出を合わせて撮像した画像であり、第二基礎画像70sは、奥側のエッジ104に露出を合わせて撮像した画像である。この場合、第一基礎画像70fでは、画像全体が明るくなるため、突起102の形状を把握できるが、奥側のエッジ104は、白飛びによりその形状を把握できない。第二基礎画像70sでは、画像全体が暗くなるため、奥側のエッジ104の形状を把握できるが、突起102は、黒潰れにより、その形状を把握できない。
HDR画像72は、こうした複数の基礎画像70を、輝度幅が高くなるように合成して得られる。図4の例によれば、第一基礎画像70fの突起102周辺のデータと、第二基礎画像70sの奥側のエッジ104周辺のデータと、を合成して、一つのHDR画像72を生成している。このようなHDR画像72に基づけば、対象物100の形状を適切に把握できる。
ところで、適切な計測用画像60を得るために必要な撮像条件(例えば、基礎撮像の回数や、カメラ52のシャッタースピード、撮像用光の輝度分布等)は、対象物100の材質や表面性状によって異なる。例えば、一般的に、アルミニウムは、S45C等の鋼材に比べて、白っぽい銀色をしているため、光が反射しやすく、白飛びが生じやすい。また、材質が同じであったとしても、面粗度が荒い対象物100は、面粗度が細かい対象物100よりも、光が反射しにくく、白飛びが生じにくい。そのため、適切なHDR画像72を取得するためには、対象物100の材質および表面性状に応じて撮像条件を変更する必要がある。
そこで、本例の計測コントローラ30は、予め、対象物100の材質および表面性状の複数の組み合わせそれぞれの、適切な撮像条件を、条件情報42として記憶している。そして、対象物100の形状を計測する際には、当該対象物100の材質および表面性状を特定し、特定された材質および表面性状に対応する撮像条件を特定し、特定された撮像条件で対象物100を撮像する。以下、この撮像条件の特定について説明する。
図5は、記憶装置40に記憶されている条件情報42の一例を示す図である。図5に示すように、条件情報42では、撮像条件が、対象物100の材質および表面性状の複数の組み合わせそれぞれに分けて管理されている。本例の場合、表面性状を、対象物100に施された加工の段階、すなわち「未加工」、「荒加工」、「中仕上げ」、「仕上げ」、「鏡面」等で表している。ただし、ここで挙げた表面性状の表現は一例であり、他の形態で、表面性状を表してもよい。例えば、対象物100の面粗度、拡散反射率、表面処理の状態等で、表面性状を表してもよい。
また、図5の例では、撮像条件は、一つの計測用画像60を得るために行う基礎撮像の回数と、基礎撮像それぞれでのシャッタースピード、カメラゲイン、撮像用光の輝度分布と、を含む。ただし、ここで挙げたパラメータは一例であり、適宜、変更されてもよい。例えば、撮像条件は、基礎撮像の回数とカメラゲインのみを含み、シャッタースピードおよび撮像用光の輝度分布は含まなくてもよい。こうした条件情報42に記録する数値は、予め、実験やシミュレーションにより取得する。また、必要に応じて、オペレータは、新たな材質および表面性状の撮像条件を追加したり、記録済みの撮像条件を修正したりしてもよい。
計測コントローラ30は、対象物100の材質および表面性状を特定し、これを条件情報42に照らし合わせ、対象物100の材質および表面性状に対応する撮像条件を特定する。例えば、対象物100の材質が「SS400」であり、対象物100の表面性状が「未加工」の場合、計測コントローラ30は、対象物100の形状を計測するために、対象物100に対して、基礎撮像を1回行う。このとき、カメラ52のシャッタースピードは「20」であり、カメラゲインは「2」であり、撮像用光の輝度分布は、「R,G,B=164,128,128」である。また、対象物100の材質が「SS400」であり、対象物100の表面性状が「仕上げ」の場合、計測コントローラ30は、対象物100の形状を計測するために、対象物100に対して、基礎撮像を2回行う。1回目の基礎撮像におけるカメラ52のシャッタースピードは「10」であり、カメラゲインは「1」であり、撮像用光の輝度分布は、「R,G,B=64,64,96」である。また、2回目の基礎撮像におけるカメラ52のシャッタースピードは「12」であり、カメラゲインは「1」であり、撮像用光の輝度分布は、「R,G,B=128,128,128」である。
次に、対象物100の材質および表面性状の特定について説明する。本例の場合、計測コントローラ30は、対象物100の加工内容を記録した、加工図面64および加工プログラム66の少なくとも一つに基づいて、対象物100の材質および表面性状の少なくとも一つを特定する。また、加工図面64および加工プログラム66で、材質および表面性状が特定できない場合、計測コントローラ30は、標準的な条件で対象物100を撮像して予備画像62を取得し、この予備画像62を解析して、対象物100の材質および表面性状の少なくとも一つを特定する。さらに、予備画像62でも材質および表面性状を特定できない場合、計測コントローラ30は、オペレータに対して、対象物100の材質および表面性状の入力を要求する。以下、これについて順番に説明する。
初めに、加工図面64および加工プログラム66の少なくとも一つに基づいて、材質および表面性状の少なくとも一つを特定する技術について説明する。材質および表面性状を特定する場合、計測コントローラ30は、対象物100の加工図面64および加工プログラム66を取得する。図6は、加工図面64の一例を示す図である。図6に示す通り、通常、加工図面64には、対象物100の加工完了後の形状を示す図の他、対象物100の製品名や材質等が記載されている。計測コントローラ30は、加工図面64に対して、OCR等の画像解析処理を施し、加工図面64に記載されたテキストを抽出する。そして、計測コントローラ30は、抽出されたテキストに基づいて、対象物100の材質および表面性状の少なくとも一つを特定する。例えば、計測コントローラ30は、抽出されたテキストの中に、特定の材質を示すテキストがあれば、対象物100は当該特定の材質であると判断する。同様に、計測コントローラ30は抽出されたテキストの中に、特定の表面性状を示すテキストがあれば、対象物100は当該特定の表面性状であると判断する。したがって、例えば、抽出されたテキストの中に「S45C」、「荒加工」というテキストが含まれている場合、計測コントローラ30は、対象物100の材質が「S45C」であり、対象物100の表面性状が「荒加工」であると判断する。
また、別の形態として、計測コントローラ30は、加工プログラム66に基づいて、対象物100の材質および表面性状の少なくとも一つを特定してもよい。加工プログラム66は、工作機械14に意図した作業を行わせるための命令を記述したもので、「NCプログラム」とも呼ばれる。加工プログラム66に基づいて材質等を特定する場合、オペレータは、予め定められたルールに従い、加工プログラム66に材質等を示す情報を埋め込んでおく。
例えば、通常、加工プログラム66のうち、括弧で囲まれた部分はコメントを示しており、コメントは、工作機械14の制御には使用されない。そこで、加工プログラム66の中に、コメントとして、材質および表面性状の少なくとも一つを示すテキストが記載されている場合には、それを、対象物100の材質および表面性状の少なくとも一つとして特定してもよい。例えば、図7に示す加工プログラム66の場合、三行目に、コメントとして「S45C, ROUGH」が記述されている。このうち、「S45C」は材質の一種である「S45C」を示すテキストであり、「ROUGH」は、表面性状の一種である「荒加工」を示すテキストである。したがって、この場合、計測コントローラ30は、対象物100の材質を「S45C」、対象物100の表面性状を「荒加工」として特定する。
また、別の形態として、加工プログラム66で用いる変数または指令の値で、材質および表面性状の少なくとも一つを表してもよい。この場合、計測コントローラ30は、変数または指令の値と、材質および表面性状と、の対応関係を、予め、記憶しておく。図8は、こうした対応関係を示すデータの一例である。図8における左側のテーブル80aは、コモン変数「VC101」の値と、材質と、の対応関係を記録した材質対応テーブル80aであり、右側のテーブル80bは、コモン変数「VC102」の値と、表面性状と、の対応関係を記録した表面性状対応テーブル80bである。計測コントローラ30は、予めこうした対応テーブル80a,80bを記憶装置40に記憶している。図8の例では、コモン変数「VC101」の値が「10」の場合、材質「S45C」を表し、コモン変数「VC102」の値が「20」の場合、表面性状「荒加工」を表す。そのため、加工プログラム66内に、「VC101=10;」、「VC102=20;」との記述がある場合、計測コントローラ30は、対象物100の材質を「S45C」、表面性状を「荒加工」として特定する。
また、変数に限らず、専用の指令コードを作成し、指令コードの値に、材質や表面性状を割り当ててもよい。例えば、材質を指令するコードとして「MP」を作成し、MPの値が「1」ならば「S45C」、「2」ならば「SS400」等のように設定してもよい。同様に、表面性状を指令するコードとして「MQ」を作成し、MQの値が「0」ならば「未加工」、「1」ならば「荒加工」等のように設定してもよい。この場合、加工プログラム66に「MP 2; MQ 0;」との記述があれば、計測コントローラ30は、材質は「SS400」、表面性状は「未加工」と判断する。
また、別の形態として、加工プログラム66に記述されるシーケンス名(「シーケンス番号」ともいう)を用いて材質および表面性状の少なくとも一つを表してもよい。シーケンス名は、加工プログラム66中のブロック(行)の相対位置を示し、任意の行の先頭に記述するものである。通常、シーケンス名は「N+”英数字”」として記述される。例えば、加工プログラム66において「N100;」という行があった場合、当該行は、シーケンス名「N100」を表している。
このシーケンス名で、材質および表面性状の少なくとも一つを表す場合、計測コントローラ30は、シーケンス名と、材質および表面性状の少なくとも一つと、の対応関係を予め記憶しておく。図9は、こうした対応関係の一例を示す図である。図9の場合、シーケンス名の2文字目は形状計測コマンドを示しており、3文字目は、材質を示しており、4文字目は、表面性状を示す。この場合、計測コントローラ30は、シーケンス名の2文字目に「Z」がある場合、当該シーケンス名の3文字目は材質を、4文字目は表面性状を表していると判断する。また、図9の例では、三文字目の「S」は材質「S45C」を表しており、4文字目の「A」は表面性状「荒加工」を表している。したがって、この場合、加工プログラム66内に「NZSA;」との記述があった場合、計測コントローラ30は、対象物100の材質を「S45C」、表面性状を「荒加工」として特定する。
また、別の形態として、加工プログラム66で指定される工具に基づいて表面性状を特定してもよい。この場合、計測コントローラ30は、工具番号と、表面性状と、の対応関係を予め記憶しておく。例えば、計測コントローラ30は、工具番号「01」は、荒加工用のエンドミルであり、工具番号「02」は、中仕上げ用のエンドミルである、といったように、工具番号と対応する加工内容(ひいては表面性状)と、を予め記憶しておく。この場合において、加工プログラム66内に「T01; M06;」との記述があった場合、計測コントローラ30は、対象物100の表面性状を「荒加工」として特定する。
また、別の形態として、加工プログラム66で指定される加工パラメータに基づいて表面性状を特定してもよい。この場合、計測コントローラ30は、加工パラメータの数値範囲と、表面性状と、の対応関係を予め記憶しておく。この場合、加工パラメータは、例えば、主軸回転数、切削送り速度、切り込み量等を含む。計測コントローラ30は、表面性状の種類それぞれごとに、主軸回転数の数値範囲、切削送り速度の数値範囲、切り込み量の数値範囲を記憶しておく。そして、計測コントローラ30は、加工プログラム66に記述された、これら加工パラメータの指令値に基づいて、表面性状を特定してもよい。例えば、図10に示す加工プログラム66があった場合を考える。加工プログラム66において、Sは主軸回転数、Fは切削送り速度、PQはオペレータが定義した切込み量を示す変数である。また、M3は主軸正転指令、G01は切削送り指令である。そのため、図10の加工プログラム66は、主軸回転数4000rpmで、切削送り速度100mm/minで、Z方向に100mmの位置から2mm切り込んで加工することを示している。計測コントローラ30は、こうした数値を、予め記憶しているパラメータの数値範囲と照らし合わせて、表面性状を特定する。
また、別の形態として、材質および表面性状を記述したファイルを作成し、このファイルへのアクセス指令を加工プログラム66に記述してもよい。例えば、所定のファイルパスのファイルにアクセスすることを示す指令コードとして「MR」を設定しておくとともに、当該ファイルに、材質および表面性状をテキストもしくはバイナリ形式で記述しておく。そして、加工プログラム66において「MR;」との記述があれば、計測コントローラ30は、所定のファイルパスのファイルにアクセスし、材質および表面性状を特定する。
また、加工図面64および加工プログラム66から材質および表面性状を特定できない場合には、対象物100の撮像画像に基づいて、対象物100の材質および表面性状を特定してもよい。すなわち、この場合、計測コントローラ30は、予め、様々な材質および表面性状の物品を撮像した画像群をリファレンスデータ44として記憶しておく。また、対象物100の材質および表面性状を特定したい場合、計測コントローラ30は、撮像ユニット50を駆動して、対象物100を撮像し、予備画像62を取得する。この予備画像62の撮像条件は、標準的な条件で撮像する。換言すれば、予備画像62の撮像条件は、対象物100の材質および表面性状に応じて変更させない。
計測コントローラ30は、この予備画像62を、リファレンスデータ44の画像群と比較し、予備画像62と類似する画像を特定する。そして、計測コントローラ30は、特定された画像に写っている物品の材質および表面性状に基づいて、対象物100の材質および表面性状を特定してもよい。なお、予備画像62と画像群との比較においては、例えば、パターンマッチング等の技術を用いてもよい。また、加工図面64、加工プログラム66、予備画像62のいずれからも、材質および表面性状が特定できない場合、計測コントローラ30は、オペレータに対して、材質および表面性状の入力を要求してもよい。
また、別の形態として、計測コントローラ30は、学習モデル45を用いて対象物100の材質および表面性状を特定してもよい。この場合、計測コントローラ30は、事前に機械学習によって生成された学習モデル45を記憶装置40に保持している(図2参照)。学習モデル45は、材質および表面性状が既知の物品の画像(例えば、材質および表面性状の情報がラベル付けされたリファレンスデータ44の画像群等)を教師データとして学習器に入力し、画像と、材質および表面性状と、の相関関係を学習させる教師あり学習によって生成できる。教師あり学習による学習モデル45の生成手法については公知であるため、ここでは詳細な説明を省略する。
計測コントローラ30は、この学習モデル45に予備画像62を入力することにより、対応する材質および表面性状を出力として得ることができる。なお、出力された材質および表面性状は、オペレータの入力によって修正されてもよい。また、別の形態として、学習モデル45は、一つの予備画像62に対して、材質および表面性状の組み合わせを複数、出力してもよい。この場合、計測コントローラ30は、得られた複数の組み合わせを尤度の高い順番で、オペレータに提示する。そして、オペレータの入力によって選択決定された組み合わせを、対象物100の材質および表面性状として特定してもよい。また、この場合、予備画像62を入力データとし、オペレータによって修正あるいは選択された材質および表面性状の組み合わせをラベルとする教師データを作成し、学習器による再学習を行うことで、学習モデル45を更新してもよい。かかる構成とすることで、材質および表面性状を推定する精度を向上させることができる。なお、これまでの説明では、材質および表面性状の双方を特定しているが、材質および表面性状のいずれか一方のみを特定する構成としてもよい。
対象物100の材質および表面性状が特定できれば、上述した通り、計測コントローラ30は、特定された材質および表面性状を、条件情報42に照らし合わせて、計測用画像60を撮像する際の撮像条件を特定する。そして、対象物100の形状計測のトリガがONとなれば、形状計測システム12は、特定された撮像条件で対象物100を撮像する計測用撮像を実行する。ここで、形状計測のトリガは、オペレータからの操作指示であってもよい。例えば、オペレータが、数値制御装置20の操作パネル22または計測コントローラ30のUI装置38を操作して、「形状計測開始」を指示した場合に、対象物100の計測用撮像を実行してもよい。
また、別の形態として、加工プログラム66に、トリガとなるコードを記述してもよい。例えば、加工プログラム66に、三次元形状計測の実行を指示する専用のMコードやGコードを記述しておき、工作機械14が、この専用のMコードやGコードを実行するタイミングになれば、形状計測システム12が、計測用撮像を実行してもよい。
次に、こうした形状計測システム12の処理の流れについて、図11および図12を参照して説明する。形状計測システム12は、起動されれば、まず、システム全体を初期化する(S10)。具体的には、計測コントローラ30は、カメラ52およびプロジェクタ54のパラメータ設定を初期化する。
初期化が完了すれば、計測コントローラ30は、対象物100の材質および表面性状を特定する(S12~S24)。具体的には、計測コントローラ30は、まず、数値制御装置20と通信を行い、加工図面64および加工プログラム66の取得を試みる(S12)。加工図面64および加工プログラム66が取得できた場合(S12でYes)、計測コントローラ30は、加工図面64および加工プログラム66を解析し、対象物100の材質および表面性状を特定する(S16)。
一方、加工図面64および加工プログラム66が取得できない場合(S12でNo)、計測コントローラ30は、撮像ユニット50で対象物100を撮像し、予備画像62を取得する(S20)。続いて、計測コントローラ30は、得られた予備画像62を、リファレンスデータ44と比較し、または、学習モデル45へ入力して、対象物100の材質および表面性状を特定する(S22)。
加工図面64等または予備画像62に基づいて、材質および表面性状が得られた場合(S18でYes)には、ステップS26に進む。一方、材質および表面性状の少なくとも一方が得られなかった場合(S18でNo)、計測コントローラ30は、オペレータに対して、材質および表面性状の少なくとも一方の入力を要求し、これにより、材質および表面性状を特定する(S24)。
材質および表面性状が特定できれば、計測コントローラ30は、特定された材質および表面性状を、条件情報42に照らし合わせる。条件情報42に、特定された材質等に対応する条件が記録されている場合(S26でYes)、計測コントローラ30は、対応する条件を、撮像条件として設定する(S28)。一方、特定された材質等に対応する条件が、条件情報42に記録されていない場合(S26でNo)、計測コントローラ30は、特定された材質等に対応する撮像条件の新規登録をオペレータに要求する。この要求を受けて、オペレータが撮像条件の新規登録を行う場合(S30でYes)、計測コントローラ30は、この新規登録を受け付けたうえで(S32)、ステップS26に戻る。一方、オペレータが新規登録を行わない場合(S30でNo)、計測コントローラ30は、オペレータに対して、撮像条件の入力を要求する。そして、この要求を受けてオペレータが入力した条件を、撮像条件として設定する(S34)。
撮像条件の設定が完了すれば、計測コントローラ30は、対象物100の形状計測のトリガがONか否かをモニタリングする(S36)。形状計測のトリガは、上述した通り、オペレータからの指示、または、加工プログラム66における特定のコードである。したがって、例えば、計測コントローラ30は、オペレータからの計測指示の有無をモニタリングしてもよい。また、計測コントローラ30は、数値制御装置20から加工の進捗状況として、加工プログラム66のうち現在実行している行数を定期的に取得し、この実行行数に基づいて、計測を指示するコードが実行されたか否かをモニタリングしてもよい。
形状計測のトリガがONとなれば(S36でYes)、計測コントローラ30は、撮像ユニット50を駆動して、設定された撮像条件で対象物100を撮像し、計測用画像60を取得する。さらに、計測コントローラ30は、得られた計測用画像60に基づいて、対象物100の点群データ74を生成する(S38)。
一方、形状計測のトリガがONとなっておらず(S36でNo)、また、形状計測システム12がOFFとなっていない場合(S40でNo)、計測コントローラ30は、さらに、撮像条件の変更の要否を判断する(S42)。すなわち、撮像条件が設定された後、対象物100そのものが変更されたり、対象物100に対して別の種類の切削加工が施されたりした場合、対象物100の材質および表面性状が変更している可能性が高い。そこで、計測コントローラ30は、数値制御装置20において、加工プログラム66に記述されたコードのうち、工具交換を指令するコードまたはワーク交換を指令するコードが実行された場合、あるいは、数値制御装置20で実行する加工プログラム66そのものが変更された場合には、撮像条件の変更が必要と判断する。撮像条件の変更が必要と判断した場合(S42でYes)、計測コントローラ30は、ステップS12に戻る。一方、撮像条件の変更が不要な場合(S42でNo)、計測コントローラ30は、ステップS36に戻る。
以上の説明で明らかな通り、本例では、対象物100の材質および表面性状の複数の組み合わせそれぞれの、撮像条件を、条件情報42として記憶している。また、計測コントローラ30は、対象物100の材質および表面性状を特定し、特定された対象物100の材質および表面性状に対応する撮像条件を条件情報42に基づいて特定し、特定された撮像条件で対象物100の撮像を実行する。かかる構成とすることで、対象物100の材質および表面性状が変更されたとしても、適切な条件で対象物100を撮像できる。そして、結果として、対象物100の形状を適切に把握できるため、より簡易な手順で適切に対象物100の形状を計測できる。
なお、形状計測システム12は、対象物100の材質および表面性状の複数の組み合わせそれぞれの、撮像条件を、条件情報42として予め記憶しておき、この条件情報42に基づいて、対象物100の撮像条件を特定するのであれば、その他の構成は、適宜変更されてもよい。例えば、上記の説明では、対象物100の材質および表面性状を特定するために、加工図面64および加工プログラム66を優先的に利用し、次いで予備画像62を利用し、最後に、オペレータに情報入力を求めている。しかし、材質および表面性状を特定する手順は、適宜、変更されてもよい。したがって、例えば、常にオペレータに情報入力を求めてもよい。また、別の形態として、加工図面64および加工プログラム66を利用せず、常に予備画像62を利用して、材質および表面性状を特定してもよい。
また、これまでの説明では、対象物100の材質および表面性状によっては、HDR画像72を生成し、これを計測用画像60として取り扱っているが、対象物100の形状を把握できるのであれば、HDR画像72を一切生成しなくてもよい。また、これまでの説明では、計測コントローラ30と数値制御装置20を、互いに独立した別個のコンピュータとしているが、計測コントローラ30は、数値制御装置20に組み込まれてもよい。換言すれば、数値制御装置20が、計測コントローラ30として機能してもよい。また、各構成要素の個数も適宜、変更されてもよく、例えば、形状計測システム12が、複数の計測コントローラ30および複数の撮像ユニット50を有してもよい。また、一つの工作機械システム10が、複数の形状計測システム12を有してもよい。また、上述の説明では、光源53として、プロジェクタ54を用いているが、光源53は、撮像に適した光、すなわち、撮像用光を対象物100に照射できるのであれば、他の装置でもよい。例えば、光源53は、撮像用光として、ライン光や点群状光等のパターン光を照射するレーザ光源でもよい。また、これまでの説明では、形状計測システム12は、工作機械14を有する工作機械システム10に組み込まれている。しかし、形状計測システム12は、工作機械14とは無関係のシステムに組み込まれてもよいし、他のシステムに組み込まれることなく、単独で設けられてもよい。