(57)【要約】  フィルタリング装置（２０）は、取得部（２１）と、フィルタリング部（２２）と、を備える。取得部（２１）は、繰り返し入力される入力値を取得する。フィルタリング部（２２）は、入力値に含まれるノイズを低減するフィルタリングにより出力値を得る。また、フィルタリング部（２２）は、現在の入力値と過去の出力値との差が第１閾値を超える場合に、該過去の出力値を得るための重みよりも大きい重みで現在の入力値の重み付けをすることで新たな出力値を得る。
2020008627.tif 000002
【特許請求の範囲】
【請求項１】
繰り返し入力される入力値を取得する取得手段と、
前記入力値に含まれるノイズを低減するフィルタリングにより出力値を得るフィルタリング手段と、を備え、
前記フィルタリング手段は、現在の前記入力値と過去の前記出力値との差が第１閾値を超える場合に、該過去の前記出力値を得るための重みよりも大きい重みで現在の前記入力値の重み付けをすることで新たな前記出力値を得る、
フィルタリング装置。
【請求項２】
前記フィルタリング手段は、前記差が第２閾値を下回る場合に、過去の前記出力値を得るための重みよりも小さい重みで現在の前記入力値の重み付けをすることで新たな前記出力値を得る、
請求項１に記載のフィルタリング装置。
【請求項３】
前記フィルタリング手段は、
移動平均により前記出力値を算出し、
前記差が前記第１閾値を超える場合に、移動平均の対象とする前記入力値の数を減少させることで現在の前記入力値の重みを大きくして新たな前記出力値を算出する、
請求項１又は２に記載のフィルタリング装置。
【請求項４】
現在の前記入力値の重みは、移動平均の対象とする前記入力値の数の逆数に等しい、
請求項３に記載のフィルタリング装置。
【請求項５】
前記フィルタリング手段は、現在の前記入力値と過去の前記出力値との重み付け平均として新たな前記出力値を算出する、
請求項１又は２に記載のフィルタリング装置。
【請求項６】
前記フィルタリング手段は、現在の前記入力値の重みの初期値を１に設定する、
請求項１から５のいずれか一項に記載のフィルタリング装置。
【請求項７】
現在の前記入力値の重みは、ゼロから１の範囲内の値であって、
前記フィルタリング手段は、前記差が前記第１閾値を超える場合に、現在の前記入力値の重みを１に設定する、
請求項１から６のいずれか一項に記載のフィルタリング装置。
【請求項８】
前記フィルタリング手段は、前記差が連続して前記第１閾値を超える場合に、現在の前記入力値の重みを大きくする、
請求項１から７のいずれか一項に記載のフィルタリング装置。
【請求項９】
前記第１閾値は、過去の前記入力値に関する統計量に基づいて規定される、
請求項１から８のいずれか一項に記載のフィルタリング装置。
【請求項１０】
計測値を繰り返し出力する計測手段と、
ノイズを低減するフィルタリングを前記計測値に施す請求項１から９のいずれか一項に記載のフィルタリング装置と、
を備えるセンサ装置。
【請求項１１】
繰り返し入力される入力値を取得する取得ステップと、
前記入力値に含まれるノイズが低減された出力値を得るフィルタリングステップと、
を含み、
前記フィルタリングステップでは、現在の前記入力値と過去の前記出力値との差が第１閾値を超える場合に、該過去の前記出力値を得るための重みとは異なる重みで現在の前記入力値の重み付けをすることで新たな前記出力値を得る、フィルタリング方法。
【請求項１２】
コンピュータを、
繰り返し入力される入力値を取得する取得手段、
前記入力値に含まれるノイズが低減された出力値を得るフィルタリング手段、として機能させ、
前記フィルタリング手段は、現在の前記入力値と過去の前記出力値との差が第１閾値を超える場合に、該過去の前記出力値を得るための重みとは異なる重みで現在の前記入力値の重み付けをすることで新たな前記出力値を得る、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィルタリング装置、センサ装置、フィルタリング方法及びプログラムに関する。
【背景技術】
【０００２】
工場に代表される施設では、センサによる測定値を利用して生産システム、加工システム、検査システムを含む種々のシステムが運用される。センサによる測定値は、通常、ノイズを含んでいるため、この測定値をフィルタに通してノイズを低減することが広く行われている。ノイズを低減するフィルタとしては、複数の測定値の平均をとる移動平均及びＩＩＲ（Infinite Impulse Response）フィルタが知られている。ここで、測定値の平均をとることには、単純な算術平均の他、加重平均に代表される種々の演算が含まれる。【０００３】
例えば、ｎ個の測定値の移動平均によれば、ノイズを１／√ｎ程度に低減することが見込まれる。このため、移動平均の対象となるデータ数ｎを多くすればノイズの低減率を高くすることができる。ただし、データ数ｎが多くなると、測定値がノイズとは異なる変化を含むときに移動平均の値がその変化に大きく遅延して追随することとなってしまう。そこで、移動平均に用いるデータ数を、ユーザが設定した精度及び応答時間に応じて設定する技術が提案されている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−３２３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術は、データ数を一旦設定すると、繰り返し入力される計測データに対してこの設定を変更することなく移動平均の演算をする。このため、ユーザが精度を重視した設定とすると遅延が大きくなってしまい、一方、ユーザが応答時間を重視した設定とすると精度が低下してしまう。したがって、ノイズを低減するためのフィルタリングの性能をある程度確保しつつ、応答性を向上させる余地があった。【０００６】
本発明は、上記の事情に鑑みてなされたものであり、ノイズを低減するためのフィルタリングの性能をある程度確保しつつ、応答性を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明のフィルタリング装置は、繰り返し入力される入力値を取得する取得手段と、入力値に含まれるノイズを低減するフィルタリングにより出力値を得るフィルタリング手段と、を備え、フィルタリング手段は、現在の入力値と過去の出力値との差が第１閾値を超える場合に、該過去の出力値を得るための重みよりも大きい重みで現在の入力値の重み付けをすることで新たな出力値を得る。
【発明の効果】
【０００８】
本発明によれば、フィルタリング手段は、現在の入力値と過去の出力値との差が第１閾値を超える場合に、該過去の出力値を得るための重みよりも大きい重みで現在の入力値の重み付けをすることで新たな出力値を得る。現在の入力値の重みが大きいほど過去のデータによる寄与が少なくなり遅延を縮小することができる。これにより、ノイズを低減するためのフィルタリングの性能をある程度確保しつつ、応答性を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１に係るセンサ装置の構成を示すブロック図
【図２】実施の形態１に係る移動平均の概要を示す図
【図３】実施の形態１に係る移動平均の具体例を示す図
【図４】実施の形態１に係るフィルタリング装置のハードウェア構成を示す図
【図５】実施の形態１に係るフィルタリング処理を示すフローチャート
【図６】実施の形態１に係るデータ数の変更について説明するための図
【図７】実施の形態１に係るフィルタリングについて説明するための図
【図８】実施の形態１の変形例に係るフィルタリングについて説明するための図
【図９】実施の形態１の変形例に対する比較例を示す図
【図１０】実施の形態１の変形例に係るフィルタリング処理を示すフローチャート
【図１１】実施の形態２に係るＩＩＲフィルタについて説明するための第１の図
【図１２】実施の形態２に係るＩＩＲフィルタについて説明するための第２の図
【図１３】実施の形態２に係るフィルタリングについて説明するための図
【図１４】実施の形態３に係るフィルタリング処理を示すフローチャート
【図１５】実施の形態３に係るフィルタリングについて説明するための図
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態に係るフィルタリングを実行するセンサ装置１０について、図面を参照しつつ詳細に説明する。
【００１１】
実施の形態１．
本実施の形態に係るセンサ装置１０は、レーザ光を利用して対象物までの距離の変化量を計測するレーザ変位センサである。センサ装置１０は、図１に示されるように、ワーク３０に向けてレーザ光を照射する発光素子１１と、ワーク３０において反射した反射光を結像するためのレンズ１２と、レンズ１２を透過した反射光を受光する受光素子１３と、受光素子１３の出力から計測値としてのワーク３０の変位量を算出する計測部１４と、発光素子１１及び受光素子１３を制御する素子制御部１５と、計測部１４、素子制御部１５及びフィルタリング装置２０を含むレーザ変位センサシステムを制御するシステム制御部１６と、計測部１４から出力される計測値に含まれるノイズを低減するフィルタリング装置２０と、を有する。
【００１２】
発光素子１１は、レーザ素子としてのレーザダイオードを含む。受光素子１３は、配列された複数の光電変換素子を含む撮像素子である。複数の光電変換素子はそれぞれ、受光強度に応じた電圧値を出力する。受光素子１３は、受光強度の分布を示す情報を計測部１４に出力する。
【００１３】
計測部１４は、受光強度の分布からピークを検出して、当該ピークの受光位置から三角測距によりワーク３０との変位量を算出する。計測部１４は、算出した変位量を計測値としてフィルタリング装置２０に出力する。計測部１４は、請求項の計測手段として機能する。
【００１４】
素子制御部１５は、発光素子１１の発光及び受光素子１３の受光を制御する。詳細には、素子制御部１５は、発光素子１１による発光の強度及び時間を制御し、受光素子１３による撮像のタイミングを制御する。
【００１５】
システム制御部１６は、素子制御部１５を制御することにより発光素子１１の発光及び受光素子１３の受光を繰り返し実行させて、計測部１４に計測値を繰り返し算出させる。また、システム制御部１６は、フィルタリング装置２０を制御して、例えば、フィルタリングに関するパラメータの設定、及びフィルタリング結果の出力先に関する設定をする。
【００１６】
フィルタリング装置２０は、計測値にフィルタリングを施して、計測値に含まれるノイズを低減しつつ、計測値に対するある程度高い追従性を有する出力値を算出する装置である。フィルタリング装置２０は、フィルタを構成する係数を適応的に変化させることで、計測値がノイズとは異なる変動を含むときに、出力値がこの変動に追従する際の遅延を縮小する。
【００１７】
フィルタリング装置２０は、計測値を取得する取得部２１と、計測値にフィルタリングを施すフィルタリング部２２と、フィルタリングの結果を出力する出力部２３と、を有する。
【００１８】
取得部２１は、フィルタリング装置２０に入力される入力値として、計測部１４から繰り返し出力される計測値を取得する。計測値のサンプリング周期は、例えば１００μｓ、１ｍｓ、又は１０ｍｓである。取得部２１は、入力値を取得するたびに、この入力値をフィルタリング部２２に出力する。取得部２１は、請求項の取得手段として機能する。
【００１９】
フィルタリング部２２は、過去の一定期間に取得した複数の入力値から、ノイズが低減された出力値を移動平均により演算する。詳細には、フィルタリング部２２は、現在時点における最新の入力値を含むｎ個の入力値の平均値を出力値として算出する。フィルタリング部２２は、請求項のフィルタリング手段として機能する。
【００２０】
図２には、フィルタリング部２２による演算の概要について示されている。図２において、「Ｄｉｎ」は入力値を示し、「Ｄｏｕｔ」は出力値を示す。入力値Ｄｉｎが新たに入力されると、この入力値Ｄｉｎは、「１」から「ｎ＋１」までの番号が付されたリストのうち１番目のレジスタに追加される。このリストは、先入れ先出しのキューに相当し、最新の入力値Ｄｉｎの直前に取得された入力値Ｄｉｎは、２番目のレジスタに移動し、３番目以降のレジスタには、新しい順に入力値Ｄｉｎが格納されることとなる。このため、時刻ｔにおいては、１番目のレジスタには時刻ｔ−１に取得された入力値Ｄｉｎが格納され、ｎ番目のレジスタには時刻ｔ−ｎに取得された入力値Ｄｉｎが格納される。なお、ここでの時刻は、サンプリングした順番に対応する。また、入力値が取得される前の初期状態では、各レジスタにゼロが格納される。ｎは、移動平均の対象となる入力値のデータ数である。
【００２１】
ここで、データ数をｎとする移動平均による出力値の算出は、以下の式（１）で表される。
【００２２】
【数１】
2020008627.tif 000003
【００２３】
ただし、上記式（１）中の添字ｉは、取得された入力値の番号を示し、ｉが大きいほどＤｉｎｉは新しい入力値となる。上記式（１）では、Ｄｉｎｉは、現在の入力値を意味し、Ｄｉｎｉ−１は、Ｄｉｎｉの直前に取得された入力値を意味する。また、Ｄｏｕｔｉは、現在の出力値を意味し、Ｄｏｕｔｉ−１は、Ｄｏｕｔｉの直前に算出された出力値を意味する。上記式（１）は、以下の式（２）のように変形することができる。
Ｄｏｕｔｉ＝（１／ｎ）（ｎ・Ｄｏｕｔｉ−１＋Ｄｉｎｉ−Ｄｉｎｉ−ｎ）
＝Ｄｏｕｔｉ−１＋（１／ｎ）（Ｄｉｎｉ−Ｄｉｎｉ−ｎ）  ・・・（２）
【００２４】
上記式（２）は、前回の出力値Ｄｏｕｔｉ−１に対して、現在の入力値Ｄｉｎｉを１／ｎ倍した値を加算するとともに、ｎ回前の入力値を（１／ｎ）倍した値を減算することで、現在の出力値が算出されることを示している。この演算によれば、入力値を取得するたびにｎ個の入力値を格納するレジスタそれぞれにアクセスすることなく出力値が算出される。
【００２５】
図２中の「Ｓｕｍ」のレジスタは、１番目からｎ番目までのレジスタに格納された値の総和を保持する。このレジスタには、初期状態ではゼロが格納される。フィルタリング部２２は、入力値Ｄｉｎを取得するたびに、取得した入力値Ｄｉｎを１番目のレジスタに追加し、１番目のレジスタに追加したこの値を「Ｓｕｍ」のレジスタの値に加算するとともに、ｎ番目のレジスタから（ｎ＋１）番目のレジスタに移動した値を「Ｓｕｍ」のレジスタの値から減算することにより、総和の値を更新する。そして、フィルタリング部２２は、「Ｓｕｍ」のレジスタの値をｎで除算することにより、出力値Ｄｏｕｔを得る。
【００２６】
図３には、フィルタリング部２２による演算の一例が示されている。図３の上段では、１番目のレジスタに「８」という値が格納されていて、ｎ番目のレジスタに「１」という値が格納されている。「Ｓｕｍ」のレジスタには、１番目からｎ番目までのレジスタに格納されている値の総和「５２」が格納されている。この状態において新たな入力値「９」が入力されると、この入力値は、図３の下段に示されるように、１番目のレジスタに追加されて、「１」の値はｎ番目のレジスタからｎ＋１番目に移動する。そして、「Ｓｕｍ」のレジスタの値「５２」について「９」が加算されるとともに「１」が減算された結果「６０」という値が算出され、データ数ｎが１０であれば、「６．０」という出力値が算出される。
【００２７】
図１に戻り、出力部２３は、フィルタリング部２２から出力される出力値を、システム制御部１６による制御に従って出力する。出力先は、例えば、不図示の表示端末、記憶装置、フィルタリング装置２０の出力値に対して信号処理を施す信号処理回路、又は、センサネットワークを介してセンサ装置１０に接続されるＰＬＣ（Programmable Logic Controller）その他の制御装置である。
【００２８】
続いて、フィルタリング装置２０のハードウェア構成について、図４を参照しつつ説明する。フィルタリング装置２０は、図４に示されるように、プロセッサ４１と、主記憶部４２と、補助記憶部４３と、入力部４４と、出力部４５と、通信部４６と、を有する。主記憶部４２、補助記憶部４３、入力部４４、出力部４５及び通信部４６はいずれも、内部バス４７を介してプロセッサ４１に接続される。
【００２９】
プロセッサ４１は、ＭＰＵ（Micro Processing Unit）、ＣＰＵ（Central Processing Unit）又は、ＦＰＧＡ（Field Programmable Gate Array）を含む。プロセッサ４１は、補助記憶部４３に記憶されるプログラムＰ１を実行することにより、フィルタリング装置２０の種々の機能を実現して、後述の処理を実行する。
【００３０】
主記憶部４２は、ＲＡＭ（Random Access Memory）を含む。主記憶部４２には、補助記憶部４３からプログラムＰ１がロードされる。そして、主記憶部４２は、プロセッサ４１の作業領域として用いられる。
【００３１】
補助記憶部４３は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）及びＨＤＤ（Hard Disk Drive）に代表される不揮発性メモリを含む。補助記憶部４３は、プログラムＰ１の他に、プロセッサ４１の処理に用いられる種々のデータを記憶する。補助記憶部４３は、プロセッサ４１の指示に従って、プロセッサ４１によって利用されるデータをプロセッサ４１に供給し、プロセッサ４１から供給されたデータを記憶する。
【００３２】
入力部４４は、フィルタリング装置２０の外部から情報を入力するための端子を含む。入力部４４は、外部から入力された情報を取得して、取得した情報をプロセッサ４１に通知する。出力部４５は、フィルタリング装置２０の外部に情報を出力するための端子を含む。出力部４５は、プロセッサ４１の指示に従って、プロセッサ４１から提供された情報を外部に出力する。
【００３３】
通信部４６は、外部の装置と通信するためのネットワークインタフェース回路を含む。通信部４６は、外部から信号を受信して、この信号により示されるデータをプロセッサ４１へ出力する。また、通信部４６は、プロセッサ４１から出力されたデータを示す信号を外部の装置へ送信する。
【００３４】
図４に示されるハードウェア構成が協働することにより、図１に示される種々の機能が実現される。詳細には、主として入力部４４が、取得部２１を実現する。主としてプロセッサ４１及び主記憶部４２が、フィルタリング部２２を実現する。主として出力部４５が、出力部２３を実現する。ただし、フィルタリングを施した結果を通信により外部の装置へ通知する際には、通信部４６が出力部２３を実現してもよい。
【００３５】
続いて、フィルタリング装置２０によって実行されるフィルタリング処理について、図５を参照しつつ説明する。図５に示されるフィルタリング処理は、フィルタリング装置２０の電源が投入されることで開始する。
【００３６】
フィルタリング処理では、フィルタリング装置２０は、初期化処理として、第１係数（１／ｎ）を初期値に設定する（ステップＳ１）。具体的には、フィルタリング部２２が、移動平均の対象となるデータ数ｎの逆数である第１係数に対して、初期値として１を代入する。これにより、データ数ｎの初期値が１に設定される。
【００３７】
なお、第１係数（１／ｎ）は、現在の入力値に乗じる重み係数を意味する。フィルタリング部２２が移動平均を施す場合には、複数の入力値それぞれをデータ数ｎで除算することとなり、この除算は、複数の入力値それぞれに係数（１／ｎ）を乗じることに等しい。また、係数（１／ｎ）は、入力値それぞれの重みに相当し、ゼロから１までの範囲内の値である。
【００３８】
次に、フィルタリング装置２０は、入力値を取得する（ステップＳ２）。具体的には、取得部２１が、計測部１４から出力される計測値を取得する。ステップＳ２は、請求項の取得ステップに対応する。
【００３９】
次に、フィルタリング装置２０は、過去の出力値があるか否かを判定する（ステップＳ３）。具体的には、フィルタリング部２２が、ステップＳ２で取得した入力値から算出される出力値よりも過去に算出された出力値があるか否かを判定する。ここで、過去の出力値は、通常、前回の出力値を意味する。
【００４０】
過去の出力値がないと判定した場合（ステップＳ３；Ｎｏ）、フィルタリング装置２０による処理は、ステップＳ９へ移行する。一方、過去の出力値があると判定した場合（ステップＳ３；Ｙｅｓ）、フィルタリング装置２０は、現在の入力値と過去の出力値との差の大きさが閾値を超えるか否かを判定する（ステップＳ４）。具体的には、フィルタリング部２２が、ステップＳ２で取得した現在の入力値と、ステップＳ３で存在すると判定された過去の出力値と、の差の絶対値を算出して、この絶対値が、予め規定された閾値を超えるか否かを判定する。閾値は、フィルタリング装置２０が予め記憶する値であってもよいし、ユーザによって変更された値であってもよい。
【００４１】
差の大きさが閾値を超えないと判定した場合（ステップＳ４；Ｎｏ）、フィルタリング装置２０は、第１係数が下限値より大きいか否かを判定する（ステップＳ５）。具体的には、フィルタリング部２２は、現在の第１係数（１／ｎ）が予め規定された下限値より大きいか否かを判定する。下限値は、フィルタリング装置２０が予め記憶する値であってもよいし、ユーザによって変更された値であってもよい。この下限値は、移動平均の対象となるデータ数の最大値の逆数に相当する。この下限値は、例えば、１／６４、１／１６３８４、又は１／１３１０７２である。フィルタリング装置２０が起動した直後においては、係数の初期値が上限値である１に等しいため、ステップＳ５の判定は、通常、肯定される。
【００４２】
第１係数が下限値より大きくはないと判定した場合（ステップＳ５；Ｎｏ）、フィルタリング装置２０は、第１係数を変更することなく、フィルタリング装置２０による処理は、ステップＳ９へ移行する。
【００４３】
一方、第１係数が下限値より大きいと判定した場合（ステップＳ５；Ｙｅｓ）、フィルタリング装置２０は、第１係数を減少させる（ステップＳ６）。具体的には、フィルタリング部２２が、第１係数（１／ｎ）のｎを１だけ大きい数に変更する。換言すると、フィルタリング部２２が、移動平均の対象となるデータ数ｎを１つ増やす。フィルタリング装置２０が起動した直後は、データ数ｎが１から２に変更され、第１係数が１から１／２に減少することとなる。その後、フィルタリング装置２０による処理は、ステップＳ９へ移行する。
【００４４】
ステップＳ４にて、差の大きさが閾値を超えると判定した場合（ステップＳ４；Ｙｅｓ）、フィルタリング装置２０は、第１係数が上限値より小さいか否かを判定する（ステップＳ７）。具体的には、フィルタリング部２２は、現在の第１係数（１／ｎ）が予め規定された上限値より小さいか否かを判定する。上限値は、フィルタリング装置２０が予め記憶する値であってもよいし、ユーザによって変更された値であってもよい。この上限値は、移動平均の対象となるデータ数ｎの最小値の逆数に相当する。この上限値は、１であるが、これには限定されず、例えば１／８又は１／６４であってもよい。
【００４５】
第１係数が上限値より小さくはないと判定した場合（ステップＳ７；Ｎｏ）、フィルタリング装置２０は、第１係数を変更することなく、フィルタリング装置２０による処理は、ステップＳ９へ移行する。
【００４６】
一方、第１係数が上限値より小さいと判定した場合（ステップＳ７；Ｙｅｓ）、フィルタリング装置２０は、第１係数を増加させる（ステップＳ８）。具体的には、フィルタリング部２２が、データ数ｎを１に設定することにより第１係数（１／ｎ）を１に変更する。これにより、次に取得される入力値に関して、移動平均の対象となるデータ数ｎが１つだけになる。
【００４７】
次に、フィルタリング装置２０は、ステップＳ２で取得した入力値に第１係数（１／ｎ）を乗じて得る値から出力値を算出する（ステップＳ９）。具体的には、フィルタリング部２２が、現在の入力値に第１係数（１／ｎ）を乗じて得る値と、過去の（ｎ−１）個の入力値それぞれに第２係数（１／ｎ）を乗じて得る値と、の総和として出力値を算出する。ここで、単純な移動平均の場合には、第２係数は、第１係数に等しい値になる。第２係数は、過去の入力値に乗じる重み係数を意味する。ステップＳ９は、請求項のフィルタリングステップに対応する。
【００４８】
なお、フィルタリング装置２０は、起動した直後には過去の入力値を未だ取得していないが、ステップＳ１にてデータ数ｎを１に設定したため、ステップＳ２にて取得した入力値をそのまま出力値とする。
【００４９】
その後、フィルタリング装置２０は、ステップＳ２以降の処理を繰り返す。これにより、繰り返し取得した入力値に対して、第１係数を変更しつつ、ノイズが低減された出力値を算出することとなる。
【００５０】
図６には、移動平均の対象となるデータ数ｎの変更について模式的に示されている。図６の上段には、データ数ｎが１０に等しい場合が示されている。ここで、データ数ｎを増加させて第１係数を減少させると、データ数ｎが１１に変更されて、図６の中段に示されるように演算が実行される。ただし、データ数ｎを増加させた直後には、「Ｓｕｍ」のレジスタ値からの減算が省略され、新たな入力値の加算のみが実行される。
【００５１】
また、データ数ｎを減少させて第１係数を増加させると、データ数ｎが１に変更されて、図６の下段に示されるように演算が実行される。ただし、データ数ｎを減少させた直後は、新たな入力値がそのまま「Ｓｕｍ」のレジスタに格納される。
【００５２】
以上、説明したように、フィルタリング装置２０は、現在の入力値と過去の出力値との差が閾値を超える場合に、該過去の出力値を得るための重みよりも大きい重みで現在の入力値の重み付けをすることで新たな出力値を得る。現在の入力値の重みが大きいほど他のデータによる寄与が少なくなり遅延を縮小することができる。これにより、ノイズを低減するためのフィルタリングの性能をある程度確保しつつ、応答性を向上させることができる。
【００５３】
詳細には、フィルタリング装置２０は、現在の入力値に第１係数（１／ｎ）を乗じて得る値から出力値を算出する。この第１係数は、現在の入力値に重点を置く度合いに相当し、第１係数が大きいほど他のデータによる寄与が少なくなり遅延が縮小する一方、第１係数が小さいほど他のデータを多く使用してノイズをより低減することとなる。そして、フィルタリング装置２０は、現在の入力値と過去の出力値との差が大きい場合には、第１係数を増加させて遅延を縮小し、この差が小さい場合には、第１係数を減少させてノイズを低減する。これにより、ノイズを低減するためのフィルタリングの性能を状況に応じて向上させることができる。ひいては、フィルタリング装置２０を利用する生産設備の生産性向上、製品の品質向上に寄与する。
【００５４】
図７には、入力値及び出力値と、入力値と前回の出力値との差の大きさと、第１係数と、のそれぞれの推移が模式的に示されている。図７の上段のうち破線Ｌ１１は、前回の出力値から閾値だけ離れた値の推移を示し、入力値が２本の破線Ｌ１１で囲まれる範囲外にあると、図５中のステップＳ４の判定が肯定されることとなる。
【００５５】
図７に示されるように、時刻Ｔ１までは、前回の出力値と入力値との差の大きさが閾値以下であって、第１係数は、下限値に収束している。時刻Ｔ２においては、前回の出力値と入力値との差が閾値を超えたため、データ数ｎが１に変更され第１係数が１に増加して、新たに算出される出力値は入力値に等しくなる。そして、次の時刻Ｔ３では、データ数ｎが２に増加して第１係数が１／２に減少し、複数の入力値が再び移動平均の対象となっている。図７に示されるように、入力値がノイズとは異なる変化を含む場合においても、出力値は、この変化に対して少ない遅延で追従することができる。
【００５６】
また、フィルタリング装置２０は、移動平均により出力値を算出し、過去の出力値と現在の入力値との差の大きさに応じて、移動平均の対象とする過去の入力値のデータ数を増減させた。移動平均は、比較的実装が容易であり、ノイズの低減に有効な手法であるため、フィルタリング装置２０は、ノイズを低減する性能を容易に向上させることができる。
【００５７】
また、フィルタリング装置２０は、第１係数（１／ｎ）の初期値を１に設定した。一般的な移動平均では、フィルタリングの開始直後には移動平均の対象となるデータ数ｎの入力値が未だ入力されていないため、出力値が適当な値とならず、開始直後の特殊な処理が必要となる。これに対して、フィルタリング装置２０によれば、データ数ｎの初期値が１に設定され、出力値が入力値と等しくなることから、簡便に適当な出力値を得ることができる。
【００５８】
また、第１係数（１／ｎ）はゼロから１までの範囲内の値であって、フィルタリング装置２０は、過去の出力値と現在の入力値との差の大きさが閾値を超える場合に、第１係数を１に設定した。これにより、過去の出力値と現在の入力値との差が大きくなると、新たに算出される出力値は入力値に等しくなり、出力値を少ない遅延で入力値に追従させることができる。
【００５９】
なお、フィルタリング装置２０によるフィルタリング処理は、上述の処理に限定されない。
【００６０】
例えば、図５中のステップＳ６にて、データ数ｎを１だけ増加させて第１係数を減少させることを説明したが、第１係数の減少幅はこれに限定されず、データ数ｎを２倍に増加させて第１係数を減少させてもよい。データ数ｎを２倍に増加させれば、データ数ｎは２の乗数となり、演算が容易になる。図８には、発明者らが、データ数ｎを２倍に増加させた場合における入力値と出力値とのシミュレーション結果が示されている。このシミュレーションでは、ステップ状に変化する変位量にノイズが重畳した値が入力値とされている。図８中の「Ｉｎ」は入力値を示し、「Ｏｕｔ」は出力値を示す。図８に示されるように、出力値がステップ状に推移しており、フィルタリング処理によってノイズを低減しつつ、入力値に含まれるノイズとは異なる変化にも少ない遅延で追従していることがわかる。
【００６１】
ここで、図８のシミュレーションと同等の条件で、第１係数を変更することなくデータ数ｎを６４に固定した場合の移動平均の結果が、図９に示されている。図９の例では、出力値がノイズを１／８程度に低減しているが、入力値に対して６４回のサンプリングに相当する遅延が発生していることがわかる。
【００６２】
また、図５のフィルタリング処理を、図１０の変形例のように変更してもよい。図１０のフィルタリング処理では、ステップＳ３に続いて、フィルタリング装置１０は、出力値と入力値との差の大きさが連続して第１閾値を超えるか否かを判定する（ステップＳ１１）。具体的には、フィルタリング部２２が、この差の大きさが予め規定された回数以上連続して第１閾値を超えるか否かを判定する。この時、閾値を超えた出力の値を記憶し、その後、入力と記憶された出力との差分で逐次判断してもよい。具体的には、入力値との差が第１閾値を超えたときの出力値を基準値として記憶し、次回以降の入力値に関しては、入力値と基準値との誤差が予め規定された誤差の範囲内に連続して収まるか否かを判断してもよい。予め規定された回数は、例えば３回、１０回又は１００回であって、フィルタリング装置２０が予め記憶する回数であってもよいし、ユーザによって変更されてもよい。また、第１閾値は、第１係数を増加させるか否かを判定するための閾値であって、フィルタリング装置２０が予め記憶する値であってもよいし、ユーザによって変更されてもよい。
【００６３】
差の大きさが連続して第１閾値を超えると判定した場合（ステップＳ１１；Ｙｅｓ）、フィルタリング装置２０は、処理をステップＳ７へ移行する。一方、差の大きさが連続して第１閾値を超えてはいないと判定した場合（ステップＳ１１；Ｎｏ）、フィルタリング装置２０は、出力値と入力値との差の大きさが連続して第２閾値を下回るか否かを判定する（ステップＳ１２）。具体的には、フィルタリング部２２が、この差の大きさが、予め規定された回数以上連続して第２閾値を下回るか否かを判定する。この回数は、ステップＳ１１の判定に用いられる回数と同一であってもよいし異なっていてもよい。また、この回数は、例えば３回、１０回又は１００回であって、フィルタリング装置２０が予め記憶する回数であってもよいし、ユーザによって変更されてもよい。また、第２閾値は、第１閾値とは異なる値であって、第１係数を減少させるか否かを判定するための閾値である。第２閾値は、フィルタリング装置２０が予め記憶する値であってもよいし、ユーザによって変更されてもよい。通常は、第２閾値としては、第１閾値より大きい値が設定される。
【００６４】
差の大きさが連続して第２閾値を下回ると判定した場合（ステップＳ１２；Ｙｅｓ）、フィルタリング装置２０は、処理をステップＳ５へ移行する。一方、差の大きさが連続して第２閾値を下回ってはいないと判定した場合（ステップＳ１２；Ｎｏ）、フィルタリング装置２０による処理は、ステップＳ９へ移行する。これにより、繰り返し取得した入力値に対して、第１係数を変更しつつ、ノイズが低減された出力値を算出することとなる。
【００６５】
図１０の変形例では、第１係数を減少させるための第１閾値と、第１係数を増加させるための第２閾値とは、異なる値として設定された。出力値と入力値との差の大きさが第１閾値より大きく第２閾値より小さければ、第１係数が変更されることがない。このため、出力値と入力値との差の大きさがある程度の範囲内で安定していれば、第１係数が固定され、演算処理の高速化を容易に実現することができる。なお、図５に示される例は、第１閾値と第２閾値が等しい場合といえる。
【００６６】
また、図１０の変形例では、出力値と入力値との差の大きさが連続して第１閾値を超える場合及び連続して第２閾値を下回る場合に、第１係数が変更された。これにより、一時的なノイズにより入力値が大きく変動する度に第１係数が変更されることが回避される。ひいては、演算処理を安定して実行することができる。
【００６７】
また、現在の入力値に乗じる第１係数と、過去の入力値に乗じる第２係数と、が等しい例を説明したが、第１係数及び第２係数はそれぞれ、上記説明と異なる値であってもよい。ただし、第１係数と一又は複数の第２係数はそれぞれ、正値であって、ゼロから１までの範囲内にあることが望ましい。さらに、第１係数と一又は複数の第２係数との総和は、１であることが望ましい。複数の第２係数はそれぞれ、異なる値であってもよい。
【００６８】
実施の形態２．
続いて、実施の形態２について、上述の実施の形態１との相違点を中心に説明する。なお、上記実施の形態と同一又は同等の構成については、同等の符号を用いるとともに、その説明を省略又は簡略する。上記実施の形態１では、移動平均によるフィルタリングを入力値に対して施したが、ＩＩＲフィルタを施す形態も考えられる。以下、入力値にＩＩＲフィルタを適用する例について説明する。
【００６９】
図１１には、本実施の形態に係るフィルタリング部２２による演算の概要が示されている。図１１のブロック線図において「Ｒｅｇ」は、レジスタに登録する操作を示す。この演算では、現在の入力値Ｄｉｎｉに第１係数（１／ｎ）を乗じた値と、過去の出力値Ｄｏｕｔｉ−１に第３係数（（ｎ−１）／ｎ）を乗じた値と、の総和が新たな出力値Ｄｏｕｔｉとして出力される。この演算は、以下の式（３）で示される。第３係数は、過去の出力値に乗じる重み係数である。
【００７０】
Ｄｏｕｔｉ＝（（ｎ−１）／ｎ）Ｄｏｕｔｉ−１＋（１／ｎ）Ｄｉｎｉ  ・・・（３）
【００７１】
フィルタリング部２２の演算によれば、前回の出力値と、現在の入力値と、のそれぞれを内積して現在の出力値が算出される。換言すると、現在の入力値と過去の出力値との重み付け平均として新たな出力値が算出される。出力値は、過去の入力値の加重平均に相当する。そして、現在の入力値には、第１係数（１／ｎ）の乗算が施される。このため、第１係数（１／ｎ）を大きくすることで、遅延を少なくして現在の入力値に追随する出力値を得ることができ、第１係数（１／ｎ）を小さくすることで、過去の入力値の加重平均によりノイズをより低減することができる。
【００７２】
なお、フィルタリング部２２による演算は、図１２に示されるようなブロック線図で実現されてもよい。図１２の例に示される出力値の演算は、上記式（３）を変形した以下の式（４）で示される。
【００７３】
Ｄｏｕｔｉ＝Ｄｏｕｔｉ−１＋（１／ｎ）（Ｄｉｎｉ−Ｄｏｕｔｉ−１）  ・・・（４）
【００７４】
以上、説明したように、本実施の形態に係るフィルタリング装置２０は、現在の入力値と、過去の出力値と、の重み付け平均として現在の出力値を算出した。これにより、フィルタリング装置２０は、図５と同等の処理を実行して、上記実施の形態１と同等の効果を奏することができる。
【００７５】
図１３には、発明者らが、データ数ｎを２倍に増加させた場合におけるＩＩＲフィルタと移動平均とを比較した結果が示されている。図１３中、「＋」で示される点Ｐ２１は、入力値を示し、菱形の点Ｐ２２は、入力値の標準偏差を示し、大きい丸形の点Ｐ２３は、移動平均による出力値を示し、小さい丸形の点Ｐ２４は、ＩＩＲフィルタによる出力値を示す。また、線Ｌ２１は、理論上のノイズ低減率１／√ｎを示し、大きい菱形の点Ｐ２５は、移動平均によるノイズ低減率を示し、小さい菱形の点Ｐ２６は、ＩＩＲフィルタによるノイズ低減率を示す。図１３からわかるように、ＩＩＲフィルタによっても、移動平均と同様に、おおよそ理論的な低減率に沿ってノイズを低減することができている。なお、移動平均及びＩＩＲフィルタによるノイズ低減率は、（出力値の標準偏差）／（入力値の標準偏差）として算出される。
【００７６】
また、ＩＩＲフィルタによれば、図１１，１２に示されるように、レジスタを１つ用意するだけで演算が可能になる。これにより、図２に示されるように複数のレジスタを必要とする移動平均よりも少ないハードウェアリソースでフィルタリング処理を実行することができる。
【００７７】
なお、過去の出力値を１つだけ用いて新たな出力値を算出する例を説明したが、過去の複数の出力値を用いて新たな出力値を算出してもよい。また、現在の入力値に乗じる第１係数を（１／ｎ）として、過去の出力値に乗じる第３係数を（（ｎ−１）／ｎ）とする例を説明したが、第１係数及び第３係数はそれぞれ、上記説明と異なる値であってもよい。ただし、第１係数と一又は複数の第３係数はそれぞれ、正値であって、ゼロから１までの範囲内にあることが望ましい。さらに、第１係数と一又は複数の第３係数との総和は、１であることが望ましい。複数の第３係数はそれぞれ、異なる値であってもよい。
【００７８】
実施の形態３．
続いて、実施の形態３について、上述の実施の形態１との相違点を中心に説明する。なお、上記実施の形態と同一又は同等の構成については、同等の符号を用いるとともに、その説明を省略又は簡略する。上記実施の形態１では、閾値を予め規定されるパラメータとしていたが、この閾値は、ノイズの大きさに応じて定められることが望ましい。そこで、ノイズの大きさに応じて閾値を定める例について、以下、説明する。
【００７９】
本実施の形態に係るフィルタリング装置２０は、図１４に示されるフィルタリング処理を実行する。このフィルタリング処理では、ステップＳ３に続いて、フィルタリング装置２０は、過去の入力値の標準偏差に基づいて閾値を設定する（ステップＳ３１）。具体的には、フィルタリング部２２が、予め規定されたＰ個の入力値の標準偏差を算出して、算出した標準偏差のＱ倍の値を閾値として設定する。
【００８０】
ここで、Ｐ及びＱの値はそれぞれ、予めフィルタリング装置２０が記憶する値であってもよいし、ユーザによって変更されてもよい。Ｐは、有効な標準偏差を得るためにある程度大きい回数であることが望ましく、例えば、３２、６４、又は１２８である。また、Ｑは、ノイズの大きさと計測対象の変位量とに応じて定められることが望ましい。例えば、変位量がステップ状に変化し、この変化量がノイズより顕著に大きい場合には、Ｐを比較的大きい値に設定することで、ノイズを低減しつつ少ない遅延で変位に追従する出力値を得ることができる。このようなＰとして、例えば３或いは４とすることが考えられる。
【００８１】
以上、説明したように、本実施の形態に係るフィルタリング装置２０は、入力値の標準偏差から閾値を算出して、この閾値に基づいて第１係数を変更する。これにより、時間の経過とともにノイズの大きさが変動するような場合にも、このノイズの大きさに応じた適当な閾値を用いて第１係数を変更して適当なフィルタリングを施すことができる。
【００８２】
図１５には、発明者らが、過去の入力値の標準偏差に応じて閾値を規定した場合における入力値、出力値及び標準偏差のシミュレーションが示されている。図１５中の「ＳＤ」は、標準偏差を示す。このシミュレーションでは、ステップ状に変化する変位量にノイズを重畳した値が入力値として用いられた。図１５に示されるように、出力値は、ステップ状に変化する変位量に、少ない遅延で追従することができている。また、出力値がステップ状に推移しており、ノイズを低減することができている。
【００８３】
なお、上記実施の形態１における閾値を標準偏差に応じて規定する例について説明したが、図１０の変形例における第１閾値及び第２閾値を、標準偏差に応じて規定してもよい。また、上記実施の形態２のように移動平均に代えてＩＩＲフィルタを採用する場合にも、閾値を標準偏差に応じて規定することができる。
【００８４】
また、標準偏差に限らず、過去の入力値と出力値との少なくとも一方のバラつきに関する統計量に応じて閾値を規定してもよい。このような統計量として、出力値と入力値との差のバラつき、この差のヒストグラムにおけるピーク値或いはピーク位置、この差の偏差、及び、ヒストグラムに関する統計量の時間変動、のうち１つ又は複数に応じて閾値を規定することが考えられる。
【００８５】
以上、本発明の実施の形態について説明したが、本発明は上記実施の形態によって限定されるものではない。
【００８６】
例えば、センサ装置１０がレーザ変位装置である例について説明したが、これには限定されず、センサ装置１０は、他のセンシング機器であってもよい。
【００８７】
また、図４のハードウェア構成において入力部４４及び出力部４５は、ユーザとの間で情報を授受するユーザインタフェースを形成してもよい。
【００８８】
また、第１係数を変更する際の変更量は、上述の例に限定されず、ユーザが任意に設定してもよい。また、第１係数の初期値は、上述の例に限定されず、ユーザが任意に設定してもよい。
【００８９】
また、センサ装置１０がフィルタリング装置２０を内蔵する例について説明したが、これには限定されない。例えば、センサ装置１０とフィルタリング装置２０とが異なる装置として構成されてもよい。また、センサ装置１０とフィルタリング装置２０とが一体的に構成される場合も考えられる。この場合には、プロセッサ４１が計測部１４を実現し、取得部２１と計測部１４とが一体的に形成されてもよい。
【００９０】
また、上記実施の形態１，２に係るフィルタリング装置２０は、以下の式（５）に従って出力値を算出してもよい。
【００９１】
【数２】
2020008627.tif 000004
【００９２】
ただし、上記式（５）において、Ｄｏｕｔｉは新たに算出される出力値であって、Ｄｉｎｉは現在の入力値であって、ａ０は第１係数であって、Ｄｉｎｉ−ｋは過去の入力値であって、ａｋは第２係数であって、Ｄｏｕｔｉ−ｍは過去の出力値であって、ｂｍは第３係数である。上記式（５）右辺のａｋを含む第２項とｂｍを含む第３項とのいずれか一方のみが有効となる。換言すると、ａｋとｂｍの一方が正値になり他方がゼロとなる。上記実施の形態１は、式（５）の右辺の第３項を省略して、ａ０＝ａｋ＝（１／ｎ）とした場合に相当する。この場合においては、移動平均の対象となるデータ数は、Ｋ＋１となる。また、上記実施の形態２は、式（５）の右辺の第２項を省略して、Ｍ＝１とした場合に相当する。この場合においては、ａ０＝（１／ｎ）となり、ｂ１＝（（ｎ−１）／ｎ）となる。
【００９３】
上記式（５）において、演算に用いる過去の入力値の数Ｋ、及び演算に用いる過去の出力値の数Ｍは、任意に設定してよい。
【００９４】
また、フィルタリング装置２０は、現在の入力値に応じて第１係数を変更すると、変更した第１係数を用いて現在の入力値から新たな出力値を算出したが、これには限定されない。例えば、値を変更した第１係数を、次回以降の入力値に適用してもよい。
【００９５】
また、フィルタリング装置２０の機能は、専用のハードウェアによっても、また、通常のコンピュータシステムによっても実現することができる。
【００９６】
例えば、プロセッサ４１によって実行されるプログラムＰ１を、コンピュータ読み取り可能な非一時的な記録媒体に格納して配布し、そのプログラムＰ１をコンピュータにインストールすることにより、上述の処理を実行する装置を構成することができる。このような記録媒体としては、例えばフレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read−Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＭＯ（Magneto−Optical Disc）が考えられる。
【００９７】
また、プログラムＰ１をインターネットに代表される通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
【００９８】
また、通信ネットワークを介してプログラムＰ１を転送しながら起動実行することによっても、上述の処理を達成することができる。
【００９９】
さらに、プログラムＰ１の全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながらプログラムを実行することによっても、上述の処理を達成することができる。
【０１００】
なお、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
【０１０１】
また、フィルタリング装置２０の機能を実現する手段は、ソフトウェアに限られず、その一部又は全部を、回路を含む専用のハードウェアによって実現してもよい。
【０１０２】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【０１０３】
本発明は、ノイズを低減するフィルタリングに適している。
【符号の説明】
【０１０４】
１０  センサ装置、  １１  発光素子、  １２  レンズ、  １３  受光素子、  １４  計測部、  １５  素子制御部、  １６  システム制御部、  ２０  フィルタリング装置、  ２１  取得部、  ２２  フィルタリング部、  ２３  出力部、  ３０  ワーク、  ４１  プロセッサ、  ４２  主記憶部、  ４３  補助記憶部、  ４４  入力部、  ４５  出力部、  ４６  通信部、  ４７  内部バス、  Ｌ１１  破線、  Ｌ２１  線、  Ｐ１  プログラム、  Ｐ２１〜Ｐ２６  点。
【図１】
2020008627.tif 000005
【図２】
2020008627.tif 000006
【図３】
2020008627.tif 000007
【図４】
2020008627.tif 000008
【図５】
2020008627.tif 000009
【図６】
2020008627.tif 000010
【図７】
2020008627.tif 000011
【図８】
2020008627.tif 000012
【図９】
2020008627.tif 000013
【図１０】
2020008627.tif 000014
【図１１】
2020008627.tif 000015
【図１２】
2020008627.tif 000016
【図１３】
2020008627.tif 000017
【図１４】
2020008627.tif 000018
【図１５】
2020008627.tif 000019
【国際調査報告】
2020008627.tif 000020
2020008627.tif 000021
2020008627.tif 000022
2020008627.tif 000023